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

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

 

Vorbereitete Anweisungen ausführen

Vorbereitete Anweisungen bieten Performance-Vorteile bei häufig benutzten Anweisungen. ODBC bietet eine vollständige Menge von Funktionen für vorbereitete Anweisungen.

 Ausführen einer vorbereiteten SQL-Anweisung
  1. Bereiten Sie die Anweisung mit SQLPrepare vor.

    Das folgende Codefragment veranschaulicht z.B., wie eine INSERT-Anweisung vorbereitet wird:

    SQLRETURN   retcode;
    SQLHSTMT    stmt;
    retcode = SQLPrepare( stmt,
                "INSERT INTO Departments
                 ( DepartmentID, DepartmentName, DepartmentHeadID )
                 VALUES (?, ?, ?,)",
              SQL_NTS);

    In diesem Beispiel gilt:

    • retcode   Enthält einen Rückgabecode, der auf Erfolg oder Fehlschlag des Vorgangs überprüft 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.

  2. Legen Sie die Werte der Anweisungsparameter mit SQLBindParameter fest.

    Der folgende Funktionsaufruf zum Beispiel belegt den Wert der Variablen DepartmentID:



    SQLBindParameter( stmt,
                     1,
                     SQL_PARAM_INPUT,
                     SQL_C_SSHORT,
                     SQL_INTEGER,
                     0,
                     0,
                     &sDeptID,
                     0,
                     &cbDeptID);

    In diesem Beispiel gilt:

    • 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.

  3. Binden Sie die beiden anderen Parameter, und weisen Sie sDeptId Werte zu.

  4. Führen Sie die Anweisung aus:

    retcode = SQLExecute( stmt);

    Schritte 2 bis 4 können mehrfach ausgeführt werden.

  5. Löschen Sie die Anweisung.

    Das Löschen der Anweisung setzt die der Anweisung zugewiesenen Ressourcen frei. Anweisungen werden mit SQLFreeHandle gelöscht.

Ein vollständiges Beispiel mit Fehlerprüfung finden Sie in %SQLANYSAMP12%\SQLAnywhere\ODBCPrepare\odbcprepare.cpp.

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

 Siehe auch