Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » ODBC-Unterstützung » Möglichkeiten zum Ausführen von SQL-Anweisungen

 

Anweisungen mit gebundenen Parametern ausführen

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"

 Aufgabe
  1. 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 );
  2. 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 );
  3. 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.

  4. 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 );

Ergebnisse

Wenn die Anwendung aufgebaut und ausgeführt wird, führt sie die SQL-Anweisungen aus.

Nächste Schritte

Die obigen Codefragmente enthalten keine Fehlerprüfung. Ein vollständiges Beispiel mit Fehlerprüfung finden Sie in %SQLANYSAMP16%\SQLAnywhere\ODBCExecute\odbcexecute.cpp.

Weitere Hinweise zu SQLExecDirect finden Sie in der Microsoft-Dokumentation ODBC API Reference unter [external link] http://msdn.microsoft.com/de-de/library/ms713611.aspx.

 Siehe auch