次の方法で共有


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

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

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

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

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

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

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

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

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

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

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

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

  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)