Vorbereitete Anweisungen bieten Performance-Vorteile bei wiederholt verwendeten Anweisungen.
Voraussetzungen
Um das Beispiel erfolgreich ausführen zu können, benötigen Sie die folgenden Systemprivilegien.
INSERT für die Tabelle "Departments"
Bereiten Sie die Anweisung mit SQLPrepare vor.
Das folgende Codefragment veranschaulicht z.B., wie eine INSERT-Anweisung vorbereitet wird:
rc = SQLPrepare( stmt, "INSERT INTO Departments( DepartmentID, DepartmentName, DepartmentHeadID ) " "VALUES (?, ?, ?)", SQL_NTS ); |
In diesem Beispiel gilt:
rc Empfängt einen Rückgabecode, der auf Erfolg oder Fehlschlag des Vorgangs getestet werden sollte.
stmt Liefert ein Handle zu der Anweisung, sodass sie später referenziert werden kann.
? Die Fragezeichen sind Platzhalter für Anweisungsparameter. Ein Platzhalter wird in die Anweisung eingefügt, um anzuzeigen, wo auf Hostvariablen zugegriffen werden soll. Ein Platzhalter ist entweder ein Fragezeichen (?) oder eine Referenz auf eine Hostvariable wie in statischen Anweisungen (ein Hostvariablenname mit einem vorangestellten Doppelpunkt). Im letzteren Fall dient der Name der Hostvariable, der im Text der Anweisung benutzt wird, nur als Platzhalter für eine Referenz auf den SQL-Deskriptorbereich. Er muss nicht mit dem tatsächlichen Parameternamen übereinstimmen.
Binden Sie die Werte der Anweisungsparameter mit SQLBindParameter.
Der folgende Funktionsaufruf bindet beispielsweise den Wert der DepartmentID-Variablen:
rc = SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &sDeptID, 0, &cbDeptID ); |
In diesem Beispiel gilt:
rc Enthält einen Rückgabecode, der auf Erfolg oder Fehlschlag des Vorgangs überprüft werden sollte
stmt ist das Anweisungs-Handle.
1 zeigt an, dass dieser Aufruf den ersten Platzhalter mit einem Wert belegt.
SQL_PARAM_INPUT zeigt an, dass der Parameter eine Eingabeanweisung ist.
SQL_C_SHORT zeigt den C-Datentyp an, der in der Anwendung verwendet wird.
SQL_INTEGER zeigt den SQL-Datentyp an, der in der Datenbank verwendet wird.
Die nächsten beiden Parameter zeigen die Spaltengröße und die Anzahl der Dezimalstellen an: beide sind mit 0 (Null) für Ganzzahlen belegt.
&sDeptID ist ein Zeiger auf einen Puffer für den Parameterwert.
0 gibt die Länge des Puffers in Byte an.
&cbDeptID ist ein Zeiger auf einen Puffer für die Länge des Parameterwerts.
Binden Sie die beiden anderen Parameter, und weisen Sie sDeptId Werte zu.
Führen Sie die Anweisung aus:
rc = SQLExecute( stmt ); |
Die Schritte 2 bis 4 können mehrfach ausgeführt werden.
Löschen Sie die Anweisung.
Das Löschen der Anweisung setzt die der Anweisung zugewiesenen Ressourcen frei. Anweisungen werden mit SQLFreeHandle gelöscht.
Weitere Hinweise zu SQLPrepare finden Sie unter "SQLPrepare" in der Microsoft-Dokumentation ODBC API Reference unter http://msdn.microsoft.com/de-de/library/ms710926.aspx.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |