Konstruieren Sie SQL-Anweisungen, in denen Werte für Anweisungsparameter zur Laufzeit mit gebundenen Parametern festgelegt werden, und führen Sie sie aus. Gebundene Parameter werden auch mit vorbereiteten Anweisungen verwendet, um die Performance von Anweisungen zu steigern, die mehr als einmal ausgeführt werden.
Voraussetzungen
Um das Beispiel erfolgreich ausführen zu können, benötigen Sie die folgenden Systemprivilegien.
INSERT für die Tabelle "Departments"
Weisen Sie der Anweisung mit SQLAllocHandle ein Handle zu.
Mit der folgenden Anweisung wird z.B. auf einer Verbindung mit dem Handle SQL_HANDLE_STMT
ein Handle vom Typ stmt
mit dem Namen dbc
zugewiesen:
SQLAllocHandle( SQL_HANDLE_STMT, dbc, &stmt ); |
Binden Sie Parameter für die Anweisung mit SQLBindParameter.
Zum Beispiel werden mit den folgenden Zeilen Variable deklariert, die Werte für Abteilungs-ID, Abteilungsname und Manager-ID sowie die Anweisungszeichenfolge enthalten sollen. Anschließend werden Parameter an den ersten, zweiten und dritten Parameter einer Anweisung gebunden, die mit dem Anweisungs-Handle stmt ausgeführt wird.
#defined DEPT_NAME_LEN 40 SQLLEN cbDeptID = 0, cbDeptName = SQL_NTS, cbManagerID = 0; SQLSMALLINT deptID, managerID; SQLCHAR deptName[ DEPT_NAME_LEN + 1 ]; SQLCHAR insertstmt[ STMT_LEN ] = "INSERT INTO Departments " "( DepartmentID, DepartmentName, DepartmentHeadID ) " "VALUES (?, ?, ?)"; SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &deptID, 0, &cbDeptID ); SQLBindParameter( stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, DEPT_NAME_LEN, 0, deptName, 0,&cbDeptName ); SQLBindParameter( stmt, 3, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &managerID, 0, &cbManagerID ); |
Den Parametern Werte zuweisen.
Mit den folgenden Zeilen werden z.B. den Parametern im Fragment von Schritt 2 Werte zugewiesen.
deptID = 201; strcpy( (char * ) deptName, "Sales East" ); managerID = 902; |
Im Allgemeinen werden diese Variablen als Reaktion auf eine Benutzerhandlung festgelegt.
Führen Sie die Anweisung mit SQLExecDirect aus.
Mit der folgenden Zeile wird z.B. eine Anweisungszeichenfolge ausgeführt, die sich in insertstmt
im Anweisungs-Handle stmt
befindet.
SQLExecDirect( stmt, insertstmt, SQL_NTS ); |
Weitere Hinweise zu SQLExecDirect finden Sie in der Microsoft-Dokumentation ODBC API Reference unter http://msdn.microsoft.com/de-de/library/ms713611.aspx.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |