Programmeren in COBOL/Embedded SQL: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
singleton UPDATE + singleton INSERT + FETCH FIRST ROW ONLY + omzetting DB2->COBOL-variabelen + UPDATE met CURSOR + SQLCODE
Dynamische SQL: PREPARE vs. EXECUTE IMMEDIATE
Regel 1:
{{Programmeren in COBOL}}
In COBOL kan [[w:SQL|SQL]]-code opgenomen worden om gegevens uit [[w:databank|databank]]en te gebruiken en te bewerken. Een voorbeeld is [[w:DB2|DB2]] op mainframe ([[w:z/OS|z/OS]]). De precompiler haalt alle blokken die beginnen met EXEC SQL en eindigen met END-EXEC er uit, en laat ze door DB2 ''binden''.
<!-- __TOC__ -->
 
==Singleton SELECT==
Indien we slechts '''één''' rij zullen lezen:
Regel 240:
END-IF
 
</pre>
}}
 
==Dynamische SQL==
Sommige programma's moeten telkens een andere SQL-code uitvoeren. Denk maar aan het programma waarmee je SQL leert en verschillende SQL-statements uittest. Met PREPARE kan je een SQL-statement stap voor stap opbouwen; Met IMMEDIATE kan je een SQL-statement onmiddellijk uitvoeren:
{{code
|Taal=COBOL + embedded SQL
|Titel=PREPARE
|Code=<pre>
01 sqltekst.
02 lengte PIC S9(4) COMP VALUE 250.
02 inhoud PIC X(250).
01 pid PIC X(4)
 
EXEC SQL
DECLARE crs CURSOR FOR STMT
END-EXEC.
</pre>...<pre>
MOVE 'SELECT pid FROM personen' TO inhoud
MOVE 'WHERE pid > ?' TO inhoud(25:)
EXEC SQL
PREPARE STMT FROM :sqltekst
END-EXEC
ACCEPT pid
EXEC SQL
OPEN crs USING :pid
END-EXEC
 
EXEC SQL
FETCH crs INTO :pid
END-EXEC
PERFORM UNTIL SQLCODE NOT = 0
DISPLAY 'pid = ' pid
EXEC SQL
FETCH crs INTO :pid
END-EXEC
END-PERFORM
 
MOVE 'CLOSE crs' TO inhoud
EXEC SQL
EXECUTE IMMEDIATE :sqltekst
END-EXEC
</pre>
}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.