SQLPutData を使用して、SQL_LONGVARCHAR (text)、SQL_WLONGVARCHAR (ntext) 列、または SQL_LONGVARBINARY (image) 列に対して 65,535 バイトを超えるデータ (SQL Server バージョン 4.21a の場合) または 400 KB 以上のデータ (SQL Server バージョン 6.0 以降) を送信する場合は、次の制限が適用されます。
参照されるパラメーターには、INSERT ステートメント内の insert_value を指定できます。
参照されるパラメーターには、UPDATE ステートメントの SET 句の expression を指定できます。
SQL Server を実行しているサーバーにブロック単位でデータを提供する SQLPutData 呼び出しのシーケンスを取り消すと、バージョン 6.5 以前を使用すると、列の値が部分的に更新されます。 SQLCancel が呼び出されたときに参照された text、 ntext、または image 列は、中間プレースホルダー値に設定されます。
注
SQL Server Native Client ODBC ドライバーは、SQL Server バージョン 6.5 以前への接続をサポートしていません。
診断
SQLPutData には、SQL Server Native Client 固有の SQLSTATE が 1 つあります。
| SQLSTATE | エラー | 説明 |
|---|---|---|
| 22026 | 文字列データの長さが合致しません | 送信するデータの長さがアプリケーションによって指定されている場合 (たとえば、SQL_LEN_DATA_AT_EXEC(n) n が 0 より大きい場合、SQLPutData を介してアプリケーションによって指定されたバイトの合計数が、指定した長さと一致する必要があります。 |
SQLPutData とテーブル値パラメーター
SQLPutData は、テーブル値パラメーターで変数行バインドを使用する場合に、アプリケーションによって使用されます。 StrLen_Or_Ind パラメーターは、ドライバーがテーブル値パラメーター データの次の行または行のデータを収集する準備ができているか、使用できる行がないことを示します。
値が 0 を超える場合は、次の行の値のセットを使用できることを示します。
値が 0 の場合は、送信される行がなくなったことを示します。
値が 0 未満の場合はエラーとなり、SQLState HY090 と "文字列またはバッファーの長さが無効です" というメッセージで診断レコードがログに記録されます。
DataPtr パラメーターは無視されますが、NULL 以外の値に設定する必要があります。 詳細については、「 テーブル値パラメーターと列値のバインドとデータ転送」の「可変 TVP 行バインド」のセクションを参照してください。
StrLen_Or_IndにSQL_DEFAULT_PARAM以外の値、または 0 から SQL_PARAMSET_SIZE までの数値 (つまり、SQLBindParameter の ColumnSize パラメーター) がある場合は、エラーです。 このエラーが発生すると、SQLPutData は、"文字列長またはバッファー長が正しくありません" というメッセージで SQLSTATE=HY090 の SQL_ERROR を返します。
テーブル値パラメーターの詳細については、「 Table-Valued Parameters (ODBC)」を参照してください。
SQLPutData による機能強化された日付と時刻のサポート
日付/時刻型のパラメーター値は、「C から SQL への変換 で説明されているように変換。
詳細については、「 Date and Time Improvements (ODBC)」を参照してください。
SQLPutData による大きな CLR UDT のサポート
SQLPutData では、大きな CLR ユーザー定義型 (UDT) がサポートされています。 詳細については、「 Large CLR ユーザー定義型 (ODBC)を参照してください。