SQLPutData

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics

使用 SQLPutData 傳送超過 65,535 個字節的數據時,適用於下列限制(適用於 SQL Server 4.21a 版)或 400 KB 的數據(適用於 SQL Server 6.0 版和更新版本),用於SQL_LONGVARCHAR(text)、SQL_WLONGVARCHAR (ntext) 或 SQL_LONGVARBINARY (image) 數據行:

  • 參考參數可以是陳述中的insert_valueINSERT。

  • 所參考的參數可以是陳述句子句中的SETUPDATE式。

取消一連串的 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)。