Teilen über


Vorbereiten und Ausführen von Anweisungen (ODBC)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

So bereiten Sie eine Anweisung vor und führen sie dann mehrmals aus

  1. Rufen Sie die SQLPrepare-Funktion auf, um die Anweisung vorzubereiten.

  2. Rufen Sie optional SQLNumParams auf, um die Anzahl der Parameter in der vorbereiteten Anweisung zu ermitteln.

  3. Optional führen Sie für jeden Parameter in der vorbereiteten Anweisung Folgendes aus:

    • Rufen Sie SQLDescribeParam auf, um Parameterinformationen abzurufen.

    • Binden Sie jeden Parameter mithilfe von SQLBindParameter an eine Programmvariable. Richten Sie alle Data-at-Execution-Parameter ein.

  4. Für jede Ausführung einer vorbereiteten Anweisung gilt:

    • Wenn die Anweisung über Parametermarkierungen verfügt, fügen Sie die Datenwerte in den gebundenen Parameterpuffer ein.

    • Rufen Sie SQLExecute auf, um die vorbereitete Anweisung auszuführen.

    • Wenn Daten bei ausführungseingabeparameter verwendet werden, gibt SQLExecute SQL_NEED_DATA zurück. Senden Sie die Daten in Datenblöcken mithilfe von SQLParamData und SQLPutData.

So bereiten Sie eine Anweisung mit spaltenweiser Parameterbindung vor

  1. Rufen Sie SQLSetStmtAttr auf, um die folgenden Attribute festzulegen:

    • Legen Sie SQL_ATTR_PARAMSET_SIZE auf die Anzahl von Sätzen (S) von Parametern fest.

    • Legen Sie SQL_ATTR_PARAM_BIND_TYPE auf SQL_PARAMETER_BIND_BY_COLUMN fest.

    • Legen Sie das SQL_ATTR_PARAMS_PROCESSED_PTR-Attribut fest, um auf eine SQLUINTEGER-Variable zu zeigen und die Anzahl der verarbeiteten Parameter zu halten.

    • Legen Sie das SQL_ATTR_PARAMS_STATUS_PTR-Attribut fest, sodass es auf ein Array mit S SQLUSSMALLINT-Variablen zeigt, welche die Parameterstatusindikatoren enthalten.

  2. Rufen Sie SQLPrepare auf, um die Anweisung vorzubereiten.

  3. Rufen Sie optional SQLNumParams auf, um die Anzahl der Parameter in der vorbereiteten Anweisung zu ermitteln.

  4. Rufen Sie optional für jeden Parameter in der vorbereiteten Anweisung SQLDescribeParam auf, um Parameterinformationen abzurufen.

  5. Führen Sie folgende Aktionen für jeden Parametermarker durch:

    • Weisen Sie ein Array mit S-Parameterpuffern zu, um Datenwerte zu speichern.

    • Weisen Sie ein Array mit S-Parameterpuffern zu, um Datenlängen zu speichern.

    • Rufen Sie SQLBindParameter auf, um den Parameterdatenwert und Datenlängenarrays an den Anweisungsparameter zu binden.

    • Falls der Parameter ein Data-at-Execution-Textparameter oder –Imageparameter ist, richten Sie ihn ein.

    • Wenn Data-at-Execution-Parameter verwendet werden, richten Sie sie ein.

  6. Für jede Ausführung einer vorbereiteten Anweisung gilt:

    • Fügen Sie die S Datenwerte und S Datenlängen in die gebundenen Parameterarrays ein.

    • Rufen Sie SQLExecute auf, um die vorbereitete Anweisung auszuführen.

    • Wenn Eingabeparameter für die Datenausführung verwendet werden, gibt SQLExecute SQL_NEED_DATA zurück. Senden Sie die Daten in Datenblöcken mithilfe von SQLParamData und SQLPutData.

So bereiten Sie eine Anweisung mit zeilenweiser Parameterbindung vor

  1. Ordnen Sie ein Array [S] von Strukturen zu, wobei S der Anzahl von Parametersätzen entspricht. Die Struktur verfügt über ein Element für jeden Parameter, und jedes Element verfügt über zwei Teile:

    • Der erste Teil ist eine Variable des entsprechenden Datentyps zum Speichern der Parameterdaten.

    • Der zweite Teil ist eine SQLINTEGER-Variable zum Speichern des Statusindikators.

  2. Rufen Sie SQLSetStmtAttr auf, um die folgenden Attribute festzulegen:

    • Legen Sie SQL_ATTR_PARAMSET_SIZE auf die Anzahl von Sätzen (S) von Parametern fest.

    • Legen Sie SQL_ATTR_PARAM_BIND_TYPE auf die Größe der in Schritt 1 zugeordneten Struktur fest.

    • Legen Sie das SQL_ATTR_PARAMS_PROCESSED_PTR-Attribut fest, um auf eine SQLUINTEGER-Variable zu zeigen und die Anzahl der verarbeiteten Parameter zu halten.

    • Legen Sie das SQL_ATTR_PARAMS_STATUS_PTR-Attribut fest, sodass es auf ein Array mit S SQLUSSMALLINT-Variablen zeigt, welche die Parameterstatusindikatoren enthalten.

  3. Rufen Sie SQLPrepare auf, um die Anweisung vorzubereiten.

  4. Rufen Sie für jede Parametermarkierung SQLBindParameter auf, um den Parameterdatenwert und den Datenlängenzeiger auf ihre Variablen im ersten Element des Arrays der in Schritt 1 zugewiesenen Strukturen zu verweisen. Falls der Parameter ein Data-at-Execution-Parameter ist, richten Sie ihn ein.

  5. Für jede Ausführung einer vorbereiteten Anweisung gilt:

    • Füllen Sie das gebundene Parameterpufferarray mit Datenwerten.

    • Rufen Sie SQLExecute auf, um die vorbereitete Anweisung auszuführen. Der Treiber führt die SQL-Anweisung S Mal aus, einmal für jeden Parametersatz.

    • Wenn Eingabeparameter für die Datenausführung verwendet werden, gibt SQLExecute SQL_NEED_DATA zurück. Senden Sie die Daten in Datenblöcken mithilfe von SQLParamData und SQLPutData.

Weitere Informationen

Themen zur Vorgehensweise zum Ausführen von Abfragen (ODBC)