ステートメントの直接実行 (ODBC)
ステートメントを直接一度だけ実行するには
ステートメントにパラメーター マーカーが含まれている場合は、SQLBindParameter を使用して各パラメーターをプログラム変数にバインドします。 プログラム変数にデータ値を入力してから、実行時データ パラメーターをセットアップします。
SQLExecDirect を呼び出して、ステートメントを実行します。
実行時データ入力パラメーターが使用されている場合、SQLExecDirect は 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] を指すように設定します。
各パラメーター マーカーについて、次の操作を行います。
データ値を格納する S パラメーター バッファーの配列を割り当てます。
データの長さを格納する S パラメーター バッファーの配列を割り当てます。
SQLBindParameter を呼び出して、パラメーターのデータ値とデータの長さの配列を、ステートメント パラメーターにバインドします。
実行時データ テキストまたはイメージ パラメーターをセットアップします。
S データ値および S データの長さを、バインドされたパラメーター配列に置きます。
SQLExecDirect を呼び出して、ステートメントを実行します。 ドライバーによって、S 回 (パラメーターのセットごとに 1 回) ステートメントが効率よく実行されます。
実行時データ入力パラメーターが使用されている場合、SQLExecDirect は 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] を指すように設定します。
各パラメーター マーカーについて、SQLBindParameter を呼び出して、パラメーターのデータ値とデータの長さのポインターが、手順 1. で割り当てた構造体の配列の最初の要素にある変数を指すようにします。 パラメーターが実行時データ パラメーターである場合は、そのパラメーターをセットアップします。
バインドされたパラメーターのバッファー配列にデータ値を入力します。
SQLExecDirect を呼び出して、ステートメントを実行します。 ドライバーによって、S 回 (パラメーターのセットごとに 1 回) ステートメントが効率よく実行されます。
実行時データ入力パラメーターが使用されている場合、SQLExecDirect は SQL_NEED_DATA を返します。 SQLParamData および SQLPutData を使用してデータをまとめて送信します。
注 列方向と行方向のバインドは通常、SQLExecDirect ではなく、SQLPrepare 関数および SQLExecute と共に使用されます。