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