次の方法で共有


SQLBindParameter

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

SQLBindParameter を使用すると、SQL Server Native Client ODBC ドライバーのデータを提供する際のデータ変換の負担を軽減でき、アプリケーションのクライアント コンポーネントとサーバー コンポーネントの両方でパフォーマンスが大幅に向上します。 その他に、概数データ型を挿入または更新するときに有効桁数を失うことが少なくなるという利点もあります。

Note

charおよびwchar型データを画像列に挿入する場合、バイナリ形式に変換した後のデータのサイズではなく、渡されるデータのサイズが使用されます。

SQL Server Native Client ODBC ドライバーがパラメーターの配列の 1 つの配列要素でエラーを検出した場合、ドライバーは残りの配列要素のステートメントを引き続き実行します。 アプリケーションがこのステートメントのパラメーター状態要素の配列をバインドした場合は、その配列を基にして、エラーが発生したパラメーター行を特定できます。

SQL Server Native Client ODBC ドライバーを使用する場合は、入力パラメーターをバインドするときにSQL_PARAM_INPUTを指定します。 OUTPUT キーワードで定義されたストアド プロシージャ パラメーターをバインドするときは、SQL_PARAM_OUTPUT または SQL_PARAM_INPUT_OUTPUT のみを指定してください。

バインドパラメーター配列の配列要素によってステートメントの実行でエラーが発生した場合、SQLRowCount は SQL Server Native Client ODBC ドライバーで信頼できません。 また、ODBC ステートメント属性 SQL_ATTR_PARAMS_PROCESSED_PTR は、エラーが発生する前に処理された行数を報告します。 その後、必要に応じてパラメーター状態配列全体をアプリケーションで調査することにより、正常に実行されたステートメント数を検出できます。

SQL 文字型のパラメーターのバインド

渡される SQL データ型が文字型の場合、 ColumnSize は文字単位のサイズです (バイト単位ではありません)。 バイト単位のデータ文字列の長さが 8000 を超える場合は、 ColumnSizeSQL_SS_LENGTH_UNLIMITED に設定し、SQL 型のサイズに制限がないことを示す必要があります。

たとえば、SQL データ型が SQL_WVARCHARの場合、 ColumnSize は 4000 を超えてはなりません。 実際のデータ長が 4000 を超える場合は、 ColumnSizeSQL_SS_LENGTH_UNLIMITED に設定して、ドライバーで nvarchar(max) を使用できるようにする必要があります。

SQLBindParameter とテーブル値パラメーター

他のパラメーター型と同様に、テーブル値パラメーターは SQLBindParameter によってバインドされます。

テーブル値パラメーターがバインドされた後、そのパラメーターの列もバインドされます。 列をバインドするには、 SQLSetStmtAttr を呼び出して、テーブル値パラメーターの序数にSQL_SOPT_SS_PARAM_FOCUSを設定します。 次に、テーブル値パラメーターの各列に対して SQLBindParameter を呼び出します。 最上位パラメーター バインドに戻るには、SQL_SOPT_SS_PARAM_FOCUS に 0 を設定します。

テーブル値パラメーターの記述子フィールドへのパラメーターのマッピングについては、「 テーブル値パラメーターと列値のバインドとデータ転送を参照してください。

テーブル値パラメーターの詳細については、「 Table-Valued Parameters (ODBC)」を参照してください。

SQLBindParameter による機能強化された日付と時刻のサポート

日付/時刻型のパラメーター値は、「C から SQL への変換 で説明されているように変換timeおよびdatetimeoffsetのパラメーターにはValueType対応する構造体 (SQL_SS_TIME2_STRUCTおよびSQL_SS_TIMESTAMPOFFSET_STRUCT) を使用する場合は、SQL_C_DEFAULTまたはSQL_C_BINARYとして指定する必要があります。

詳細については、「 Date and Time Improvements (ODBC)」を参照してください。

SQLBindParameter による大きな CLR UDT のサポート

SQLBindParameter では、大きな CLR ユーザー定義型 (UDT) がサポートされます。 詳細については、「 Large CLR ユーザー定義型 (ODBC)を参照してください。

参照

ODBC API 実装の詳細
SQLBindParameter 関数