Sie können dynamische SQL-Anweisungen parametrisieren, um zum Zeitpunkt des Programmierens noch nicht bekannte Werte zwischen Anwendungsprogramm und Datenbankinstanz auszutauschen.
...
1. An Stelle der auzutauschenden Werte verwenden Sie in der Anweisung jeweils ein Fragezeichen ? als Platzhalter.
2. Mit der PREPARE-Anweisung bereiten Sie die dynamische SQL-Anweisung zur Ausführung vor und ordnen ihr einen Statement-Namen zu.
3.
Mit der EXECUTE-Anweisung
oder der OPEN CURSOR-Anweisung
führen Sie die dynamische SQL-Anweisung aus.
Mit Hilfe der USING-Klausel
weisen Sie dabei den vorher unbekannten Parametern zur Laufzeit Werte zu, zum
Beispiel aus einer beliebigen Programmvariablen. Dies muss keine
Host-Variable sein.
Eine einmal vorbereitete SQL-Anweisung können Sie beliebig oft ausführen.
Dabei können Sie jeweils neue Werte als Parameter angeben.
Wenn zum Programmierzeitpunkt die von einer dynamischen SQL-Anweisung angesprochenen Tabellenspalten und damit auch die benötigten Parameter noch nicht bekannt sind, dann verwenden Sie zusätzlich einen Deskriptor.
EXEC SQL BEGIN DECLARE SECTION;
int hnr;
char name[16];
float preis;
char cmd[100];
char *stmt;
EXEC SQL END DECLARE SECTION;
strcpy (cmd, "INSERT
(INTO???) hotel VALUES(10, 'Excelsior', \
79000, 'Ulm', 135.00)");
EXEC SQL PREPARE STMT1 FROM :cmd;
EXEC SQL EXECUTE STMT1;
hnr = 10;
strcpy (cmd, "SELECT
name, preis INTO ?, ? \
FROM hotel WHERE hnr=?");
stmt = "STMT2";
EXEC SQL PREPARE :stmt FROM :cmd;
EXEC SQL EXECUTE :stmt USING :name, :preis, :hnr;