使用 SQLPutData 針對 SQL Server 4.21a) 版或 400 KB 的資料 (傳送超過 65,535 個位元組的資料 (,或針對 SQL Server 6.0 版和更新版本) ) SQL_LONGVARCHAR (text
,SQL_WLONGVARCHAR (ntext
) 或 SQL_LONGVARBINARY (image
) 資料行,適用下列限制:
參考的參數可以是 INSERT 語句中的 insert_value 。
參考的參數可以是 UPDATE 語句之 SET 子句中的 運算式 。
取消一連串 SQLPutData 呼叫,以提供區塊中的資料給執行 SQL Server 的伺服器,會導致使用 6.5 版或更早版本時,部分更新資料行的值。 呼叫 text
SQLCancel 時所參考的 、 ntext
或 image
資料行會設定為中繼預留位置值。
注意
SQL Server Native Client ODBC 驅動程式不支援連線到 SQL Server 6.5 版和更早版本。
診斷
SQLPutData 有一個SQL Server Native Client特定的 SQLSTATE:
SQLSTATE | 錯誤 | 描述 |
---|---|---|
22026 | 字串資料,長度不符 | 例如,如果應用程式已指定要傳送位元組的資料長度,例如,使用 n SQL_LEN_DATA_AT_EXEC (n) 其中 n 大於 0,則透過 SQLPutData 指定的應用程式所指定的位元組總數必須符合指定的長度。 |
SQLPutData 和資料表值參數
搭配資料表值參數使用變數資料列系結時,應用程式會使用 SQLPutData。 StrLen_Or_Ind參數指出驅動程式已準備好收集資料,以取得資料表值參數資料的下一列或多列,或沒有其他資料列可供使用:
大於 0 的值表示有下一組資料列值。
0 這個值表示沒有其他要傳送的資料列。
小於 0 的任何值都是錯誤,而且會記錄 SQLState HY090 以及訊息「無效的字串或緩衝區長度」的診斷記錄。
DataPtr參數會被忽略,但必須設定為非 Null 值。 如需詳細資訊,請參閱 系結和Table-Valued參數和資料行值的資料傳輸中的變數 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)。 如需詳細資訊,請參閱 ODBC) (大型 CLR User-Defined 類型 。