ステートメントを直接実行する方法 (ODBC)
新規 : 2006 年 4 月 14 日
ステートメントを直接一度だけ実行するには
ステートメントにパラメータ マーカーが含まれている場合は、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 と共に使用されます。