SQLPutData

SQLPutData を使用して、65,535 バイトを超えるデータ (SQL Server 4.21a の場合) または 400 KB を超えるデータ (SQL Server 6.0 以降の場合) を SQL_LONGVARCHAR (text) 型、SQL_WLONGVARCHAR (ntext) 型、または SQL_LONGVARBINARY (image) 型の列に送信するときは、次の制限事項が適用されます。

  • 参照されるパラメーターは、INSERT ステートメント内の insert_value に設定できます。

  • 参照されるパラメーターは、UPDATE ステートメントの SET 句内の expression に設定できます。

SQL Server 6.5 以前のバージョンを使用している場合は、SQL Server を実行しているサーバーにデータをブロック単位で提供する SQLPutData の呼び出しシーケンスを取り消すと、列の値が部分的に更新されます。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 以外の値を設定する必要があります。詳細については、「テーブル値パラメーターおよび列の値のバインドとデータ転送」にあるテーブル値パラメーターの可変の行バインドに関するセクションを参照してください。

StrLen_Or_Ind に、SQL_DEFAULT_PARAM 以外の値か、0 から SQL_PARAMSET_SIZE (SQLBindParameter の ColumnSize パラメーター) までの範囲に含まれない数値が設定されている場合、エラーが発生します。このエラーが発生すると、SQLPutData は、"文字列長またはバッファー長が正しくありません" というメッセージで SQLSTATE=HY090 の SQL_ERROR を返します。

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

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

日付型または時刻型のパラメーター値は、「C から SQL への変換」で説明されているように変換されます。

詳細については、「日付/時刻の強化 (ODBC)」を参照してください。

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

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

関連項目

概念

その他の技術情報