SQLBindParameter
SQLBindParameter
を使用すると、SQL Server Native Client ODBC ドライバーのデータを提供するときにデータ変換の負担が軽減され、アプリケーションのクライアント コンポーネントとサーバー コンポーネントの両方でパフォーマンスが大幅に向上します。 その他に、概数データ型を挿入または更新するときに有効桁数を失うことが少なくなるという利点もあります。
注意
char
型と wchar
型のデータを image 型の列に挿入するときは、バイナリ形式に変換後のデータのサイズではなく、渡すデータのサイズを使用します。
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 を超える場合は、 ColumnSize を に設定する SQL_SS_LENGTH_UNLIMITED
必要があります。これは、SQL 型のサイズに制限がないことを示します。
たとえば、SQL データ型が の場合、ColumnSize は SQL_WVARCHAR
4000 を超えてはなりません。 実際のデータ長が 4000 を超える場合は、ColumnSize を に設定してSQL_SS_LENGTH_UNLIMITED
nvarchar(max)
、ドライバーによって使用されるようにする必要があります。
SQLBindParameter とテーブル値パラメーター
他のパラメーター型と同様に、テーブル値パラメーターは SQLBindParameter によってバインドされます。
テーブル値パラメーターがバインドされた後、そのパラメーターの列もバインドされます。 列をバインドするには、 SQLSetStmtAttr を呼び出して、テーブル値パラメーターの序数にSQL_SOPT_SS_PARAM_FOCUSを設定します。 次に、テーブル値パラメーターの各列に対して SQLBindParameter を呼び出します。 最上位パラメーター バインドに戻るには、SQL_SOPT_SS_PARAM_FOCUS に 0 を設定します。
テーブル値パラメーターの記述子フィールドへのパラメーターのマッピングについては、「 Table-Valued パラメーターと列値のバインドとデータ転送」を参照してください。
テーブル値パラメーターの詳細については、「 テーブル値パラメーター (ODBC)」を参照してください。
SQLBindParameter による機能強化された日付と時刻のサポート
日付/時刻型のパラメーター値は、「 C から SQL への変換」の説明に従って変換されます。 型time
と datetimeoffset
のパラメーターには、対応する構造体 (SQL_SS_TIME2_STRUCT
と SQL_SS_TIMESTAMPOFFSET_STRUCT
) が使用されている場合は、 または SQL_C_BINARY
として SQL_C_DEFAULT
ValueType を指定する必要があることに注意してください。
詳細については、「 日付と時刻の機能強化 (ODBC)」を参照してください。
SQLBindParameter による大きな CLR UDT のサポート
SQLBindParameter
は、大きな CLR ユーザー定義型 (UDT) をサポートしています。 詳細については、「 大きな CLR User-Defined型 (ODBC)」を参照してください。