Vorbereiten und Ausführen einer Anfrage (ODBC)

So bereiten Sie eine Anweisung einmal vor, und führen Sie 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ür jeden Parameter in der vorbereiteten Anweisung:

    • Rufen Sie SQLDescribeParam auf, um Parameterinformationen abzurufen.

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

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

    • Wenn die Anweisung Parametermarkierungen enthält, fügen Sie die Datenwerte in den gebundenen Parameterpuffer 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 spaltenweiser Parameterbindung vor

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

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

    • Legen Sie SQL_ATTR_PARAM_BIND_TYPE auf SQL_PARAMETER_BIND_BY_COLUMN fest.

    • Legen Sie das attribut SQL_ATTR_PARAMS_PROCESSED_PTR so fest, dass es auf eine SQLUINTEGER-Variable zeigt, um die Anzahl der verarbeiteten Parameter zu enthalten.

    • Legen Sie SQL_ATTR_PARAMS_STATUS_PTR fest, um auf ein Array[S] von SQLUSSMALLINT-Variablen zu zeigen, um Parameterstatusindikatoren zu 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ür jede Parametermarkierung:

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

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

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

    • Wenn der Parameter ein Text- oder Bildparameter für die Datenausführung ist, richten Sie ihn ein.

    • Wenn Daten bei ausführungsparametern verwendet werden, richten Sie sie ein.

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

    • 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 zeilenweise gebundenen Parametern vor

  1. Weisen Sie ein Array[S] von Strukturen zu, wobei S die Anzahl der Parametersätze ist. Die Struktur verfügt über ein Element für jeden Parameter, und jedes Element besteht aus zwei Teilen:

    • Der erste Teil ist eine Variable des entsprechenden Datentyps, um die Parameterdaten aufzunehmen.

    • Der zweite Teil ist eine SQLINTEGER-Variable, die den Statusindikator enthalten soll.

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

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

    • Legen Sie SQL_ATTR_PARAM_BIND_TYPE auf die Größe der struktur fest, die in Schritt 1 zugeordnet ist.

    • Legen Sie das attribut SQL_ATTR_PARAMS_PROCESSED_PTR so fest, dass es auf eine SQLUINTEGER-Variable zeigt, um die Anzahl der verarbeiteten Parameter zu enthalten.

    • Legen Sie SQL_ATTR_PARAMS_STATUS_PTR fest, um auf ein Array[S] von SQLUSSMALLINT-Variablen zu zeigen, um Parameterstatusindikatoren zu 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. Wenn der Parameter ein Data-at-execution-Parameter ist, richten Sie ihn ein.

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

    • Füllen Sie das gebundene Parameterpufferarray mit Datenwerten aus.

    • Rufen Sie SQLExecute auf, um die vorbereitete Anweisung auszuführen. Der Treiber führt die SQL-Anweisung S-Zeiten effizient aus, einmal für jede Gruppe von Parametern.

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

Siehe auch

Ausführen von Themen mit Vorgehensweisen für Abfragen (ODBC)