次の方法で共有


SQLBindParameter

SQLBindParameter は、SQL Server Native Client ODBC ドライバーのデータを提供するために使用する場合のデータ変換の負担をなくすことができるため、アプリケーションのクライアント コンポーネントとサーバー コンポーネントの両方でパフォーマンスが大幅に向上します。 その他の利点として、近似数値データ型を挿入または更新するときの精度の低下が挙げられます。

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 は (バイトではなく) 文字単位のサイズです。 バイト単位のデータ文字列の長さが 8,000 を超える場合は、 ColumnSizeSQL_SS_LENGTH_UNLIMITED に設定し、SQL 型のサイズに制限がないことを示す必要があります。

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

SQLBindParameter パラメーターと Table-Valued パラメーター

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

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

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

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

SQLBindParameter による拡張日時機能のサポート

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

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

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

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

こちらもご覧ください

ODBC API 実装の詳細
SQLBindParameter 関数 の