[MS SQL] Error 170

Pagina: 1
Acties:

  • FoolZero
  • Registratie: Juni 2000
  • Laatst online: 28-07 07:52

FoolZero

Freedom of speech...

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT 
  distinct IM.Postcode,IM.Huisnummer, IM.HuisnummerToev 
INTO
  Situatie5
FROM 
  Intermediair IM 
WHERE NOT EXISTS 
(
  SELECT * 
  FROM 
    BemiddelaarsHypos BH
  WHERE
    upper(IM.Postcode) = upper(BH.postkd) and
    upper(IM.Huisnummer) = upper(BH.huisnr) and
    upper(IM.HuisnummerToev) = upper(BH."h-toev")
)
GO


Geeft de error:

code:
1
2
Msg 170, Level 15, State 1
Line 15: Incorrect syntax near 'h-toev'.


Dan ben ik een behoorlijke SQL n00b, dus het kan best wel een simpele melding zijn. Het boek van MicroSoft SQL server (6.5) geeft geen goede uitleg helaas. ;(
Is iemand bekend met deze melding en weet die persoon wat hiermee moet gebeuren?

* FoolZero weet het niet meer... |:(

Please state the nature of your technical emergency
Heal the internet ...
1707 :'(


Verwijderd

ipv quotes [ ] gebruiken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Incorrect syntax near h-toev, je weet dus al waar de fout zich ongeveer bevind.
Bekijk eens goed de Upper functie (Kijk eens in de MSDN ofzo welke argumenten die functie neemt).

code:
1
Upper(BH."h-toev")

Ziet er alleszins niet goed uit.

https://fgheysels.github.io/


Verwijderd

1) altijd single quotes gebruiken ipv double quotes
2) wanneer je een spatie wilt omzeilen in je naam, gebruik '[]', net als in access.

Jouw query bekijkend, kun je volstaan met het verwijderen van de double quotes om h-toev.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Ik vraag me eigenlijk af waarom je rond h-toev quotes zet, en je dat rond de huisnr en postkd niet gedaan hebt. :?

https://fgheysels.github.io/


Verwijderd

Omdat er een - teken in zit...

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Inderdaad, je moet hier "vierkant haken" omheen zetten.

Overigens is MSSQL niet case sensitive, dus het gebruik van UPPER is overbodig. Heb je tenminste ook nog wat aan eventuele indexen. ;)

Never underestimate the power of


  • FoolZero
  • Registratie: Juni 2000
  • Laatst online: 28-07 07:52

FoolZero

Freedom of speech...

Topicstarter
cameodski schreef op 27 augustus 2002 @ 14:01:
Inderdaad, je moet hier "vierkant haken" omheen zetten.
Nou ik heb dus op vele aanraden de dubbele quotes in vierkante haken veranderd, maar dit biedt helaas geen soelaas.
code:
1
    upper(IM.HuisnummerToev) = upper(BH.[h-toev])


code:
1
2
Msg 170, Level 15, State 1
Line 15: Incorrect syntax near '['.


Uiteindelijk nog alle mogelijkheden geprobeerd met enkele en dubbele quotes.

bijv:
code:
1
    upper(IM.HuisnummerToev) = upper([BH.h-toev])
of
code:
1
    upper(IM.HuisnummerToev) = upper('BH.h-toev')
Overigens is MSSQL niet case sensitive, dus het gebruik van UPPER is overbodig. Heb je tenminste ook nog wat aan eventuele indexen. ;)
Mare wat mij verbaast is, dat onze MSSQL 6.5 server dus weldegelijk casesensitive reageert. Ik heb flink wat tijd gespendeerd om alle sql scripts aan te passen, zodat de cases weer overeen kwamen met die van de database (waarschijnlijk heb ik hier het verkeerde zitten aanpassen, |:( maar ach ik moet toch ook leren! :))

BTW iedereen bedankt voor de reeds geboden hulp! :)

Please state the nature of your technical emergency
Heal the internet ...
1707 :'(


Verwijderd

cameodski schreef op 27 augustus 2002 @ 14:01:
[...]
Overigens is MSSQL niet case sensitive, dus het gebruik van UPPER is overbodig. Heb je tenminste ook nog wat aan eventuele indexen. ;)
Err, dit is installatie afhankelijk. Tijdens de installatie kun je aangeven welke codepage je wilt en welke case sensitivity sorting. In SQLServer 2000 kun je dit na installatie ook nog wijzigen, bij 6.5 en 7.0 alleen bij een installatie. Dus het is wel degelijk zo dat je een case sensitive sqlserver installatie kunt hebben. Het is niet de default, maar soms wel te prefereren.

Verwijderd

FoolZero schreef op 27 augustus 2002 @ 14:26:
[...]
Nou ik heb dus op vele aanraden de dubbele quotes in vierkante haken veranderd, maar dit biedt helaas geen soelaas.
code:
1
    upper(IM.HuisnummerToev) = upper(BH.[h-toev])

code:
1
2
Msg 170, Level 15, State 1
Line 15: Incorrect syntax near '['.
Dit moet zijn: [BH.h-toev].
Uiteindelijk nog alle mogelijkheden geprobeerd met enkele en dubbele quotes.
Quotes zet je om string constants, dus niet om fieldnames. Dubbele quotes zet je om fieldnames in ANSI SQL, en die database setting staat waarschijnlijk aan.

  • FoolZero
  • Registratie: Juni 2000
  • Laatst online: 28-07 07:52

FoolZero

Freedom of speech...

Topicstarter
Otis, helaas heeft jouw suggestie ook niet gewerkt.
code:
1
upper(IM.HuisnummerToev) = upper([BH.h-toev])

Dit levert weer die foutmelding op... ;(
code:
1
2
Msg 170, Level 15, State 1
Line 15: Incorrect syntax near '['.

Please state the nature of your technical emergency
Heal the internet ...
1707 :'(


Verwijderd

Hmm, je zit met SQLServer 6.5?

Dit werkt ook niet?
upper("BH.h-toev")

?

de '[]' is SQLServer 7 specific idd, dus wellicht niet beschikbaar in 6.5. Ik heb geen books online hier meer van 6.5, wel papieren boeken, ik zal es kijken. Probeer eerst dat eens.

Verwijderd

Ja, het is de ". Je moet hier dus een Quoted Identifier gebruiken.

Indien dit niet standaard aanstaat in de database options, eerst:
SET QUOTED_IDENTIFIER ON

boven aan je script specificeren dwz in je stored proc.

dan:

upper("table.fieldname")

gebruiken.

Verder aanbevolen leesvoer: Books Online / Help: topics:
- Identifiers
- Quoted Identifiers
- ALTER TABLE

  • FoolZero
  • Registratie: Juni 2000
  • Laatst online: 28-07 07:52

FoolZero

Freedom of speech...

Topicstarter
Thx, Otis, volgens mij werkt de 'set quoted_identifier on' wel, maar nu wordt ik met een ander probleem opgezadeld. Waarschijnlijk een compleet ander probleem, maar ik zal hem toch maar even quoten:
code:
1
2
Msg 268, Level 16, State 2
You cannot run SELECT INTO in this database.  The DBO would have to run sp_dboption to enable this option.


Is dit een rechten probleem ofzo?

Enfin, ik ga wel eens dat RTFM proberen, want anders laat ik jullie alles uitzoeken waar ik (dik) voor betaald wordt... ;)

Please state the nature of your technical emergency
Heal the internet ...
1707 :'(


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

FoolZero schreef op 27 augustus 2002 @ 16:42:
Is dit een rechten probleem ofzo?
Nope, tis precies wat de melding zegt: een optie die je (dus) aan of uit kan zetten, en die moet aan staan om een select into te kunnen uitvoeren.

Exact expert nodig?


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Misschien is het een mogelijkheid om ipv SELECT INTO, INSERT SELECT te gebruiken. Voorwaarde is wel dat de tabel Situatie5 al bestaat.

Dit wel onder voorbehoud dat het onder 6.5 werkt, want MS heeft sindsdien nogal wat aan zitten passen. :)

Never underestimate the power of

Pagina: 1