SQLPutData
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
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 列は、中間プレースホルダー値に設定されます。
Note
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)を参照してください。