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) 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應