SQLPutDataSQLPutData

適用対象: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

SQLPutData を使用して65535バイトを超えるデータを送信する場合 (SQL ServerSQL Server バージョン 4.21 a の場合) または 400 KB のデータ (SQL Server バージョン6.0 以降) の場合は、次の制限が適用されます。これは、SQL_LONGVARCHAR (テキスト)、SQL_WLONGVARCHAR (ntext)、または SQL_LONGVARBINARY (イメージ) 列です。The following restrictions apply when using SQLPutData to send more than 65,535 bytes of data (for SQL ServerSQL Server version 4.21a) or 400 KB of data (for SQL Server version 6.0 and later) for a SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) or SQL_LONGVARBINARY (image) column:

  • 参照されるパラメーターには、INSERT ステートメント内のinsert_valueを指定できます。The referenced parameter can be the insert_value in an INSERT statement.

  • 参照されるパラメーターは、UPDATE ステートメントの SET 句のにすることができます。The referenced parameter can be an expression in the SET clause of an UPDATE statement.

SQL ServerSQL Server を実行しているサーバーにブロック単位のデータを提供する一連の SQLPutData 呼び出しをキャンセルすると、バージョン6.5 以前のバージョンを使用すると、列の値が部分的に更新されます。Canceling a sequence of SQLPutData calls that provide data in blocks to a server running SQL ServerSQL Server causes a partial update of the column's value when using version 6.5 or earlier. SQLCancel が呼び出されたときに参照されたtextntext、またはimage列は、中間プレースホルダー値に設定されます。The text, ntext, or image column that was referenced when SQLCancel was called is set to an intermediate placeholder value.

注意

SQL ServerSQL Server Native Client ODBC ドライバーでは、SQL ServerSQL Server 6.5 以前のバージョンへの接続をサポートしません。The SQL ServerSQL Server Native Client ODBC driver does not support connecting to SQL ServerSQL Server version 6.5 and earlier.

診断Diagnostics

SQLPutData には、Native Client 固有の SQLSTATE SQL ServerSQL Server が1つあります。There is one SQL ServerSQL Server Native Client specific SQLSTATE for SQLPutData:

SQLSTATESQLSTATE エラーError [説明]Description
2202622026 文字列データの長さが合致しませんString data, length mismatch たとえば SQL_LEN_DATA_AT_EXEC (n) を使用して、送信されるデータの長さ (バイト単位) がアプリケーションによって指定されている場合 ( nが0を超える場合)、sqlputdata を使用してアプリケーションで指定されたバイト数の合計が、指定された長さと一致している必要があります。If the length of data in bytes to be sent has been specified by an application, for example, with SQL_LEN_DATA_AT_EXEC(n) where n is greater than 0, the total number of bytes given by the application via SQLPutData must match the specified length.

SQLPutData とテーブル値パラメーターSQLPutData and Table-Valued Parameters

SQLPutData は、テーブル値パラメーターとの変数行バインドを使用する場合に、アプリケーションによって使用されます。SQLPutData is used by an application when using variable row binding with table-valued parameters. StrLen_Or_Indパラメーターは、ドライバーがテーブル値パラメーターデータの次の行または行のデータを収集できる状態であること、または使用可能な行がないことを示します。The StrLen_Or_Ind parameter indicates that it is ready for the driver to collect data for the next row or rows of table-valued parameter data, or that no more rows are available:

  • 値が 0 を超える場合は、次の行の値のセットを使用できることを示します。A value greater than 0 indicates that the next set of row values is available.

  • 値が 0 の場合は、送信される行がなくなったことを示します。A value of 0 indicates that there are no more rows to be sent.

  • 値が 0 未満の場合は、エラーが発生し、"文字列長またはバッファー長が正しくありません" というメッセージで SQLState HY090 の診断レコードが記録されます。Any value less than 0 is an error and results in a diagnostic record being logged with SQLState HY090 and the messaage "Invalid string or buffer length".

DataPtrパラメーターは無視されますが、NULL 以外の値に設定する必要があります。The DataPtr parameter is ignored, but must be set to a non-NULL value. 詳細については、「バインド」の「変数 TVP 行バインド」と「テーブル値パラメーターと列の値のデータ転送」を参照してください。For more information, see the section on Variable TVP row binding in Binding and Data Transfer of Table-Valued Parameters and Column Values.

StrLen_Or_Indに SQL_DEFAULT_PARAM 以外の値または0と SQL_PARAMSET_SIZE (つまり、SQLBindParameter のcolumnsizeパラメーター) の数値が含まれている場合、エラーになります。If StrLen_Or_Ind has any value other than SQL_DEFAULT_PARAM or a number between 0 and the SQL_PARAMSET_SIZE (that is, the ColumnSize parameter of SQLBindParameter), it is an error. このエラーが発生すると、SQLPutData は、"文字列長またはバッファー長が正しくありません" というメッセージで SQLSTATE=HY090 の SQL_ERROR を返します。This error causes SQLPutData to return SQL_ERROR: SQLSTATE=HY090, "Invalid string or buffer length".

テーブル値パラメーターの詳細については、「テーブル値パラメーター (の)ODBC」を参照してください。For more information about table-valued parameters, see Table-Valued Parameters (ODBC).

SQLPutData による機能強化された日付と時刻のサポートSQLPutData Support for Enhanced Date and Time Features

日付型または時刻型のパラメーター値は、「 C から SQL への変換」で説明されているように変換されます。Parameter values of date/time types are converted as described in Conversions from C to SQL.

詳細については、「日付と(時刻)の機能強化 ODBC」を参照してください。For more information, see Date and Time Improvements (ODBC).

SQLPutData による大きな CLR UDT のサポートSQLPutData Support for Large CLR UDTs

Sqlputdataは、大きな CLR ユーザー定義型 (udt) をサポートしています。SQLPutData supports large CLR user-defined types (UDTs). 詳細については、「 LARGE CLR ユーザー定義(型)ODBC」を参照してください。For more information, see Large CLR User-Defined Types (ODBC).

参照See Also

Sqlputdata 関数 SQLPutData Function
ODBC API 実装の詳細ODBC API Implementation Details