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 に関する情報を追加しました。 |