PDA

View Full Version : Syntaxabweichung von SQL und Embedded SQL?



roman
18-03-04, 21:12
Hallo zusammen.
Kann mir jemand sagen ob es bei der Verwendung von Embedded SQL Unterschiede zur "normalen" SQL-Syntax gibt?

Habe folgendes Problem:
Nachfolgender Befehl abgesetzt in der SQL-Umgebung (STRSQL) funktioniert wie man sieht einwandfrei:

UPDATE LO2660
SET HFPOKW = SUBSTR(HFPOKW,1, 32)!!'0'
WHERE HFFIRM = 270
AND HFPOKR = 107
AND SUBSTR(HFPOKW,30, 4) = ',00 '
72 Zeilen in LO2660 in LUEROM aktualisiert.

Eingebettet in einem ILE-RPG-Programm läuft das Programm bereits bei der Vor-Umwandlung auf Fehler. Der eingebettete Code und die Fehlermeldung bei der Umwandlung:

C/EXEC SQL
C+ UPDATE LO2660
C+ SET HFPOKW = SUBSTR(HFPOKW,1, 32)!!'0'
C+ WHERE HFFIRM = 270
C+ AND HFPOKR = 107
C+ AND SUBSTR(HFPOKW,30, 4) = ',00 '
C/END-EXEC
C*

und hier die Fehlermeldung:

73 C+ UPDATE luerom/LO2660
74 C+ SET HFPOKW = SUBSTR(HFPOKW,1, 32) !! '0'
5769ST1 V4R4M0 990521 SQL-ILE-RPG-Objekt erstellen BT01100
DIAGNOSENACHRICHTEN
MSG ID WTK SATZ TEXT
SQL0088 0 73 Position 9 UPDATE gilt für die gesamte Tabelle.
SQL0104 30 74 Position 45 Token ! ungültig. Gültige Token: <ENDE DER
ANWEISUNG>.

Bin froh um einen Tipp.

Besten Dank
Roman

Robi
19-03-04, 07:52
Hi,
nimm anstelle !! concat

siehe div. Postings im Forum (falls die noch da sind)
ich vermute ein CCSID problem
Gruß
Robi

B.Hauser
19-03-04, 07:54
Hallo Roman,

alle verwendeten Sonder-Zeichen sind haben sprachenabhängigen EBCDIC-Code und können damit Quell-Codes können Probleme bereiten.
Obwohl !! in interaktivem SQL akzeptier wird, streikt der Compiler.
Wenn Du !! durch || ersetzt könnte die Compilierung gelingen.
Aber das ist nicht die Lösung.

Um sicher zu sein ersetze einfach !! durch concat, das funktionniert und ist international!

Birgitta

roman
19-03-04, 08:38
Vielen Dank für die Hinweise! Hat bestens funktioniert.
Gruss
Roman