次の方法で共有


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)」を参照してください。

変更履歴

変更内容

SQLSTATE 22026 に関する情報を追加しました。

関連項目

概念

その他の技術情報