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

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » ODBC-Unterstützung » SQL-Anweisungen ausführen

 

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.

Eine Einführung in vorbereitete Anweisungen finden Sie unter Anweisungen vorbereiten.

 ♦  So wird eine vorbereitete Anweisung ausgeführt
  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.

  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 unter Beispielverzeichnis\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/en-us/library/ms710926.aspx.