ステートメントの直接実行 (ODBC)
適用対象: SQL Server
Azure SQL データベース
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
ステートメントを直接一度だけ実行するには
ステートメントにパラメーター マーカーがある場合は、 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 変数を指すように設定します。
パラメーターの状態インジケーターを保持する SQLUSSMALLINT 変数の配列 [S] を指すSQL_ATTR_PARAMS_STATUS_PTRを設定します。
各パラメーター マーカーについて、次の操作を行います。
データ値を格納する 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 変数を指すように設定します。
パラメーターの状態インジケーターを保持する SQLUSSMALLINT 変数の配列 [S] を指すSQL_ATTR_PARAMS_STATUS_PTRを設定します。
各パラメーター マーカーについて、 SQLBindParameter を呼び出して、パラメーターのデータ値とデータ長ポインターを、手順 1 で割り当てられた構造体の配列の最初の要素の変数にポイントします。 パラメーターが実行時データ パラメーターである場合は、そのパラメーターをセットアップします。
バインドされたパラメーターのバッファー配列にデータ値を入力します。
SQLExecDirect を呼び出してステートメントを実行します。 ドライバーによって、S 回 (パラメーターのセットごとに 1 回) ステートメントが効率よく実行されます。
実行時データ入力パラメーターが使用されている場合、 SQLExecDirect はSQL_NEED_DATAを返します。 SQLParamData と SQLPutData を使用して、データをチャンクで送信します。
注 列方向と行方向のバインドは、通常、 SQLPrepare 関数 および SQLExecute と組み合わせて SQLExecDirectと組み合わせて使用されます。