Freigeben über


Direktes 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 führen Sie eine Anweisung direkt und nur einmal aus

  1. Wenn die Anweisung Parametermarkierungen enthält, verwenden Sie SQLBindParameter , um jeden Parameter an eine Programmvariable zu binden. Füllen Sie die Programmvariablen mit Datenwerten, und richten Sie dann alle Data-at-Execution-Parameter ein.

  2. Rufen Sie SQLExecDirect auf, um die Anweisung auszuführen.

  3. Wenn Eingabeparameter für datenbasierte Ausführung verwendet werden, gibt SQLExecDirect SQL_NEED_DATA zurück. Senden Sie die Daten in Datenblöcken mithilfe von SQLParamData und SQLPutData.

So führen Sie mit der spaltenweisen Parameterbindung eine Anweisung mehrmals aus

  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 SQL_ATTR_PARAMS_STATUS_PTR fest, um auf ein Array [S] aus SQLUSSMALLINT-Variablen zu zeigen und die Parameterstatusindikatoren zu halten.

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

    Richten Sie alle Data-at-Execution-Text- oder Imageparameter ein.

    Setzen Sie S-Datenwerte und S-Datenlängen in die gebundenen Parameterarrays ein.

  3. Rufen Sie SQLExecDirect auf, um die Anweisung auszuführen. Der Treiber führt die Anweisung S-mal aus, einmal für jeden Parametersatz.

  4. Wenn Eingabeparameter für datenbasierte Ausführung verwendet werden, gibt SQLExecDirect SQL_NEED_DATA zurück. Senden Sie die Daten in Datenblöcken mithilfe von SQLParamData und SQLPutData.

So führen Sie mit der zeilenweisen Parameterbindung eine Anweisung mehrmals aus

  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 SQL_ATTR_PARAMS_STATUS_PTR fest, um auf ein Array [S] aus SQLUSSMALLINT-Variablen zu zeigen und die Parameterstatusindikatoren zu halten.

  3. Rufen Sie für jede Parametermarkierung SQLBindParameter auf, um den Datenwert und den Datenlängenzeiger des Parameters 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.

  4. Füllen Sie das gebundene Parameterpufferarray mit Datenwerten.

  5. Rufen Sie SQLExecDirect auf, um die Anweisung auszuführen. Der Treiber führt die Anweisung S-mal aus, einmal für jeden Parametersatz.

  6. Wenn Eingabeparameter für datenbasierte Ausführung verwendet werden, gibt SQLExecDirect SQL_NEED_DATA zurück. Senden Sie die Daten in Datenblöcken mithilfe von SQLParamData und SQLPutData.

Hinweis: Spaltenweise und zeilenweise Bindung werden in der Regel in Verbindung mit DER SQLPrepare-Funktion und SQLExecute als mit SQLExecDirect verwendet.

Weitere Informationen

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