Forum
Hi Perix,
wenn es "nur" darum geht ein Non-SELECT in COBOL dynamisch auszuführen, brauchst man keine ‚?‘. Es reicht a) ein einfacher EXECUTE IMMEDIATE bzw. b) ein PREPARE mit anschließendem EXECUTE.
a)
01DSTRING.
49DSTRING-LENPIC S9(4) COMP.
49DSTRING-TEXTPIC X(80).
…
***DSTRING einlesen und Länge ermitteln:
***DELETE FROM Table WHERE Spalte=’000200′
…
EXEC SQL
EXECUTE IMMEDIATE :DSTRING
END-EXEC
…
b)
EXEC SQL
DECLARE DYNVAR STATEMENT
END-EXEC.
01 DSTRING.
49 DSTRING-LENPIC S9(4) COMP.
49 DSTRING-TEXTPIC X(80).
01 INPNRPIC X(06).
…
*** DSTRING einlesen und Länge ermitteln
*** DELETE FROM PERSON WHERE PNR = ?
EXEC SQL
PREPARE DYNVAR FROM :DSTRING
END-EXEC
…
*** Host-Variable INPNR einlesen
EXEC SQL
EXECUTE DYNVAR USING :INPNR
END-EXEC
Mit freundlichen Grüßen
Hansi Böcking