分享方式:


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 時所參考的 textntextimage 數據行會設定為中繼佔位元值。

注意

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 實作詳細數據