Share via


SQLPutData

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

使用 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 子句中的運算式

取消一連串的 SQLPutData 呼叫,以提供區塊中的資料給執行 SQL Server 的伺服器,會導致使用 6.5 版或更早版本時,部分更新資料行的值。 呼叫 SQLCancel 時所參考的 text Ntext image 資料行會設定為中繼預留位置值。

注意

SQL Server Native Client ODBC 驅動程式不支援連線到 SQL Server 6.5 版和更早版本。

診斷

SQLPutData 有一個 SQL Server Native Client 特定的 SQLSTATE:

SQLSTATE 錯誤 描述
22026 字串資料,長度不符 例如,如果應用程式已指定要傳送位元組的資料長度,其中 n 大於 0 的 SQL_LEN_DATA_AT_EXEC( n ),則應用程式透過 SQLPutData 提供的位元組總數必須符合指定的長度。

SQLPutData 和資料表值參數

搭配資料表值參數使用變數資料列系結時,應用程式會使用 SQLPutData。 StrLen_Or_Ind 參數表示驅動程式已準備好收集資料,以便收集資料表值參數資料的下一列或資料列,或沒有其他資料列可供使用:

  • 大於 0 的值表示有下一組資料列值可供使用。

  • 值為 0 表示不會再傳送任何資料列。

  • 任何小於 0 的值都是錯誤,並導致診斷記錄與 SQLState HY090 和混亂「字串或緩衝區長度無效」。

DataPtr 參數會被忽略,但必須設定為非 Null 值。 如需詳細資訊,請參閱系結和資料表值參數和資料行值的 資料傳輸中的 變數 TVP 資料列系結一節。

如果 StrLen_Or_Ind SQL_DEFAULT_PARAM以外的任何值或介於 0 和SQL_PARAMSET_SIZE之間的數位(也就是 SQLBindParameter 的 ColumnSize 參數),則為錯誤。 此錯誤會導致 SQLPutData 傳回SQL_ERROR:SQLSTATE=HY090、「字串或緩衝區長度無效」。

如需資料表值參數的詳細資訊,請參閱 資料表值參數 (ODBC)

增強日期和時間功能的 SQLPutData 支援

日期/時間類型的參數值會依從 C 轉換成 SQL 中所述 進行轉換。

如需詳細資訊,請參閱 日期和時間改善 (ODBC)

大型 CLR UDT 的 SQLPutData 支援

SQLPutData 支援大型 CLR 使用者定義型別 (UDT)。 如需詳細資訊,請參閱 大型 CLR 使用者定義型別 (ODBC)

另請參閱

SQLPutData 函式
ODBC API 實作詳細資料