Anfang des Inhaltsbereichs

Hintergrunddokumentation Dynamische SQL-Anweisungen mit Parametern Dokument im Navigationsbaum lokalisieren

Verwendung

Sie können dynamische SQL-Anweisungen parametrisieren, um zum Zeitpunkt des Programmierens noch nicht bekannte Werte zwischen Anwendungsprogramm und Datenbankinstanz auszutauschen.

Vorgehensweise

...

      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.

Hinweis

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.

Beispiel

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;

Ende des Inhaltsbereichs