ステートメントを準備して実行する方法 (ODBC)
ステートメントを 1 回だけ準備して複数回実行するには
SQLPrepare を呼び出して、ステートメントを準備します。
必要に応じて、SQLNumParams を呼び出して、準備されたステートメント内のパラメータの数を確認します。
必要に応じて、準備されたステートメント内の各パラメータに対して次の操作を行います。
SQLDescribeParam を呼び出して、パラメータ情報を取得します。
SQLBindParameter を使用して、各パラメータをプログラム変数にバインドします。実行時データ パラメータをセットアップします。
準備されたステートメントの各実行に対して次の操作を行います。
ステートメントにパラメータ マーカーがある場合は、バインドされたパラメータ バッファにデータ値を格納します。
SQLExecute を呼び出して、準備されたステートメントを実行します。
実行時データ入力パラメータが使用されている場合、SQLExecute は SQL_NEED_DATA を返します。SQLParamData および SQLPutData を使用してデータをまとめて送信します。
列方向のパラメータのバインドを使用してステートメントを準備するには
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] を指すように設定します。
SQLPrepare を呼び出して、ステートメントを準備します。
必要に応じて、SQLNumParams を呼び出して、準備されたステートメント内のパラメータの数を確認します。
必要に応じて、準備されたステートメント内の各パラメータに対し、SQLDescribeParam を呼び出してパラメータ情報を取得します。
各パラメータ マーカーについて、次の操作を行います。
データ値を格納する S パラメータ バッファの配列を割り当てます。
データの長さを格納する S パラメータ バッファの配列を割り当てます。
SQLBindParameter を呼び出して、パラメータのデータ値とデータの長さの配列を、ステートメント パラメータにバインドします。
パラメータが実行時データの text または image パラメータである場合は、それをセットアップします。
実行時データ パラメータを使用する場合は、それらをセットアップします。
準備されたステートメントの各実行に対して次の操作を行います。
S データ値および S データの長さを、バインドされたパラメータ配列に置きます。
SQLExecute を呼び出して、準備されたステートメントを実行します。
実行時データ入力パラメータが使用されている場合、SQLExecute は SQL_NEED_DATA を返します。SQLParamData および SQLPutData を使用してデータをまとめて送信します。
行方向にバインドされたパラメータを使用してステートメントを準備するには
構造体の配列[S] を割り当てます。この S は行パラメータのセット数です。構造体には各パラメータについて 1 つの要素があり、各要素は次の 2 つの部分で構成されています。
最初の部分は、パラメータ データを格納する適切なデータ型の変数です。
2 つ目の部分は、状態インジケータを格納する SQLINTEGER 変数です。
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] を指すように設定します。
SQLPrepare を呼び出して、ステートメントを準備します。
各パラメータ マーカーについて、SQLBindParameter を呼び出して、パラメータのデータ値とデータの長さのポインタが、手順 1. で割り当てた構造体の配列の最初の要素にある変数を指すようにします。パラメータが実行時データ パラメータである場合は、そのパラメータをセットアップします。
準備されたステートメントの各実行に対して次の操作を行います。
バインドされたパラメータのバッファ配列にデータ値を入力します。
SQLExecute を呼び出して、準備されたステートメントを実行します。ドライバによって、S 回 (パラメータのセットごとに 1 回) SQL ステートメントが効率よく実行されます。
実行時データ入力パラメータが使用されている場合、SQLExecute は SQL_NEED_DATA を返します。SQLParamData および SQLPutData を使用してデータをまとめて送信します。