次の方法で共有


ステートメントの準備と実行 (ODBC)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

ステートメントを 1 回だけ準備して複数回実行するには

  1. SQLPrepare 関数を呼び出してステートメントを準備します。

  2. 必要に応じて、 SQLNumParams を呼び出して、準備されたステートメント内のパラメーターの数を決定します。

  3. 必要に応じて、準備されたステートメント内の各パラメーターに対して次の操作を行います。

    • パラメーター情報を取得するには、 SQLDescribeParam を呼び出します。

    • SQLBindParameter を使用して、各パラメーターをプログラム変数にバインドします。 実行時データ パラメーターをセットアップします。

  4. 準備されたステートメントの各実行に対して次の操作を行います。

    • ステートメントにパラメーター マーカーがある場合は、バインドされたパラメーター バッファーにデータ値を格納します。

    • SQLExecute を呼び出して、準備されたステートメントを実行します。

    • 実行時のデータ入力パラメーターが使用されている場合、 SQLExecute はSQL_NEED_DATAを返します。 SQLParamDataSQLPutData を使用して、データをチャンクで送信します。

列方向のパラメーターのバインドを使用してステートメントを準備するには

  1. SQLSetStmtAttr を呼び出して、次の属性を設定します。

    • SQL_ATTR_PARAMSET_SIZE に、パラメーターのセット数 (S) を設定します。

    • SQL_ATTR_PARAM_BIND_TYPE を SQL_PARAMETER_BIND_BY_COLUMN に設定します。

    • SQL_ATTR_PARAMS_PROCESSED_PTR 属性を、処理されたパラメーターの数を格納する SQLUINTEGER 変数を指すように設定します。

    • SQL_ATTR_PARAMS_STATUS_PTR を、パラメーターの状態インジケーターを格納する SQLUSSMALLINT 変数の配列[S] を指すように設定します。

  2. SQLPrepare を呼び出してステートメントを準備します。

  3. 必要に応じて、 SQLNumParams を呼び出して、準備されたステートメント内のパラメーターの数を決定します。

  4. 必要に応じて、準備されたステートメントの各パラメーターに対して SQLDescribeParam を呼び出してパラメーター情報を取得します。

  5. 各パラメーター マーカーについて、次の操作を行います。

    • データ値を格納する S パラメーター バッファーの配列を割り当てます。

    • データの長さを格納する S パラメーター バッファーの配列を割り当てます。

    • SQLBindParameter を呼び出して、パラメーターのデータ値とデータ長の配列をステートメント パラメーターにバインドします。

    • パラメーターが実行時データの text または image パラメーターである場合は、それをセットアップします。

    • 実行時データ パラメーターを使用する場合は、それらをセットアップします。

  6. 準備されたステートメントの各実行に対して次の操作を行います。

    • S データ値と S データ長をバインドされたパラメーター配列に配置します。

    • SQLExecute を呼び出して、準備されたステートメントを実行します。

    • 実行時データ入力パラメーターが使用されている場合、SQLExecute はSQL_NEED_DATAを返します。 SQLParamData と SQLPutData を使用して、データをチャンクで送信します。

行方向にバインドされたパラメーターを使用してステートメントを準備するには

  1. 構造体の配列[S] を割り当てます。この S は行パラメーターのセット数です。 構造体には各パラメーターについて 1 つの要素があり、各要素は次の 2 つの部分で構成されています。

    • 最初の部分は、パラメーター データを格納する適切なデータ型の変数です。

    • 2 つ目の部分は、状態インジケーターを格納する SQLINTEGER 変数です。

  2. SQLSetStmtAttr を呼び出して、次の属性を設定します。

    • SQL_ATTR_PARAMSET_SIZE に、パラメーターのセット数 (S) を設定します。

    • SQL_ATTR_PARAM_BIND_TYPE を、手順 1. で割り当てた構造体のサイズに設定します。

    • SQL_ATTR_PARAMS_PROCESSED_PTR 属性を、処理されたパラメーターの数を格納する SQLUINTEGER 変数を指すように設定します。

    • SQL_ATTR_PARAMS_STATUS_PTR を、パラメーターの状態インジケーターを格納する SQLUSSMALLINT 変数の配列[S] を指すように設定します。

  3. SQLPrepare を呼び出してステートメントを準備します。

  4. 各パラメーター マーカーについて、SQLBindParameter を呼び出して、パラメーター データ値とデータ長ポインターを、手順 1 で割り当てられた構造体の配列の最初の要素の変数にポイントします。 パラメーターが実行時データ パラメーターである場合は、そのパラメーターをセットアップします。

  5. 準備されたステートメントの各実行に対して次の操作を行います。

    • バインドされたパラメーターのバッファー配列にデータ値を入力します。

    • SQLExecute を呼び出して、準備されたステートメントを実行します。 ドライバーによって、S 回 (パラメーターのセットごとに 1 回) SQL ステートメントが効率よく実行されます。

    • 実行時データ入力パラメーターが使用されている場合、SQLExecute はSQL_NEED_DATAを返します。 SQLParamData と SQLPutData を使用して、データをチャンクで送信します。

参照

クエリを実行する方法に関するトピック (ODBC)