SQLPutData
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics 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)。