Freigeben über


Verwenden von Cursorn (ODBC)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

So verwenden Sie Cursor

  1. Rufen Sie SQLSetStmtAttr auf, um die gewünschten Cursorattribute festzulegen:

    Legen Sie die Attribute SQL_ATTR_CURSOR_TYPE und SQL_ATTR_CONCURRENCY fest (dies ist die bevorzugte Option).

    oder

    Legen Sie die Attribute SQL_CURSOR_SCROLLABLE und SQL_CURSOR_SENSITIVITY fest.

  2. Rufen Sie SQLSetStmtAttr auf, um die Rowsetgröße mit dem SQL_ATTR_ROW_ARRAY_SIZE-Attribut festzulegen.

  3. Sie können auch SQLSetCursorName aufrufen, um einen Cursornamen festzulegen, wenn positionierte Updates mit der WHERE CURRENT OF-Klausel durchgeführt werden.

  4. Führen Sie die SQL-Anweisung aus.

  5. Sie können optional auch SQLGetCursorName aufrufen, um den Cursornamen abzurufen, wenn positionierte Updates mit der WHERE CURRENT OF-Klausel durchgeführt werden und in Schritt 3 mit SQLSetCursorName kein Cursorname angegeben wurde.

  6. Rufen Sie SQLNumResultCols auf, um die Anzahl von Spalten (C) im Rowset abzurufen.

    Verwenden Sie spaltenbezogene Bindungen.

    - oder -

    Verwenden Sie zeilenbezogene Bindungen.

  7. Rufen Sie beliebige Rowsets vom Cursor ab.

  8. Rufen SQLMoreResults auf, um zu ermitteln, ob ein anderes Resultset verfügbar ist.

    • Wenn SQL_SUCCESS zurückgegeben wird, ist ein anderes Resultset verfügbar.

    • Wenn SQL_NO_DATA zurückgegeben wird, sind keine weiteren Resultsets verfügbar.

    • Wenn SQL_SUCCESS_WITH_INFO oder SQL_ERROR zurückgegeben wird, rufen Sie SQLGetDiagRec auf, um festzustellen, ob die Ausgabe von einer PRINT- oder RAISERROR-Anweisung verfügbar ist.

    Wenn für Ausgabeparameter oder für den Rückgabewert einer gespeicherten Prozedur gebundene Anweisungsparameter verwendet werden, verwenden Sie die jetzt in den Puffern für gebundene Parameter verfügbaren Daten.

    Wenn gebundene Parameter verwendet werden, hat jeder Aufruf von SQLExecute oder SQLExecDirect die SQL-Anweisung S mal ausgeführt, wobei S die Anzahl der Elemente im Array von gebundenen Parametern ist. Das bedeutet, dass S Ergebnismengen verarbeitet werden müssen, wobei jede Ergebnismenge sämtliche Resultsets, Ausgabeparameter und Rückgabecodes enthält, die in der Regel von einer einzelnen Ausführung der SQL-Anweisung zurückgegeben werden.

    Wenn ein Resultset COMPUTE-Zeilen enthält, wird jede COMPUTE-Zeile als eigenes Resultset verfügbar gemacht. Diese COMPUTE-Resultsets werden in die normalen Zeilen eingefügt und teilen normale Zeilen in mehrere Resultsets.

  9. Sie können optional SQLFreeStmt mit SQL_UNBIND aufrufen, um Puffer mit gebundenen Spalten freizugeben.

  10. Wenn ein weiteres Resultset verfügbar ist, fahren Sie mit Schritt 6 fort.

    Wenn in Schritt 9 SQLMoreResults für ein teilweise verarbeitetes Resultset aufgerufen wird, wird das restliche Resultset gelöscht. Eine andere Möglichkeit, ein teilweise verarbeitetes Resultset zu löschen, besteht darin, SQLCloseCursor aufzurufen.

    Sie können den Typ des verwendeten Cursors entweder durch die Festlegung von SQL_ATTR_CURSOR_TYPE und SQL_ATTR_CONCURRENCY oder die Festlegung von SQL_ATTR_CURSOR_SENSITIVITY und SQL_ATTR_CURSOR_SCROLLABLE steuern. Sie sollten die zwei Methoden zur Angabe des Cursorverhaltens nicht kombinieren.

Weitere Informationen

Verwenden von Cursorn (Vorgehensweisen) (ODBC)