PDA

View Full Version : ILE Cobol emb. SQL insert Problem



rebe
13-06-03, 08:33
Hallo Leute!

Folgendes Problem mit ILE COBOL und emb. SQL-Befehlen bekomme ich nicht in den Griff:

ext. logische Datei
--------------------
SELECT KDSTLF19 ASSIGN TO DATABASE-KDSTLF19
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY IS EXTERNALLY-DESCRIBED-KEY.

FD KDSTLF19 LABEL RECORDS ARE STANDARD.
01 KDSTLF19-REC.
COPY DDS-ALL-FORMATS OF KDSTLF19.

folgende Zeile bringt einen Fehler:
------------------------------------------

exec sql insert into lgkdn000 values
(:kdstlf19.kdskundnr,
:kdstlf19.kdslfanam1)
end-exec
-------------------------------------------
SQL0312 30 3193 Position 17 Variable KDSTLF19 nicht definiert oder nicht
verwendbar.
SQL0312 30 3193 Position 26 Variable KDSKUNDNR nicht definiert oder
nicht verwendbar.
SQL0312 30 3194 Position 17 Variable KDSTLF19 nicht definiert oder nicht
verwendbar.
SQL0312 30 3194 Position 26 Variable KDSLFANAM1 nicht definiert oder
nicht verwendbar.
Die Felder der Datei KDSTLF19 gibt es noch einmal in meinem Programm mit einer anderen log. Datei, deshalb muß ich beim Insert speziell auf die Felder dieser log. Datei verweisen. Die Felder sind für INSERT verwendbar. Es hat funktioniert, als ich nur diese eine log. Datei hatte.

Ich kann die Felder der log. Datei vorher in im Programm definierte Variablen schieben, damit sie beim Insert eindeutig sind, aber wie muss denn die Syntax sein, damit der Insert auch so klappt?

Jemand eine Idee?

Vielen Dank für Support.

Gruß
Reiner

rmittag
13-06-03, 08:48
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Jemand eine Idee?
[/quote]

Handbuch : DB2 UDB for AS400 SQL Programming
Seite : 255

<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Host variables cannot be records or elements.
[/quote]

Gruß
Rolf

p.s. hier stehts
http://publib.boulder.ibm.com/pubs/html/as400/v4r4/ic2924/info/db2/rbafymst271.htm#Header_355

[Dieser Beitrag wurde von rmittag am 13. Juni 2003 editiert.]

rebe
13-06-03, 11:36
Hallo Moderator!

Vielen Dank für die Hilfe, aber ganz bin ich noch nicht überzeugt.

>Host variables cannot be records or elements

Wenn ich nur eine log. Datei habe, dann sieht die Syntax so aus:

exec sql insert into lgkdn000 values
(:kdskundnr,
:kdslfanam1)
end-exec

Die beiden Variablen kdskundnr und kdslfanam1 sind Felder aus einer log. Datei, die extern definiert ist. Dieses Insert funktioniert so, wie ich es hingeschrieben habe.
Warum geht diese Version und nicht die oben angesprochene? Diese beiden Variablen sind auch nicht mit Declare definiert worden.


Schöne Grüße
Reiner

rmittag
13-06-03, 11:59
zwischen (1)
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
exec sql insert into lgkdn000 values
(:kdstlf19.kdskundnr,
:kdstlf19.kdslfanam1)
end-exec
[/quote]
und (2)
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
exec sql insert into lgkdn000 values
(:kdskundnr,
:kdslfanam1)
end-exec
[/quote]
besteht ja wohl ein Unterschied. Der Präprozessor kann mit Elementen (1) nichts anfangen, insbesondere wenn das selbe Element in verschiedenen Strukturen auftaucht.

Beschwerden hierzu bitte an IBM http://www.as400-forum.de/ubb/wink.gif.

Für embedded SQL gilt, dass man mit solchen Restriktionen leben muss. Insbesondere ILE-Rpg Programmierer können ein Lied davon singen, wie weit der Präprozessor hinter den aktuellen Fähigkeiten des Compilers hinterherhinkt.

Gruß
Rolf