SQLPutData
針對 SQL_LONGVARCHAR (text)、SQL_WLONGVARCHAR (ntext) 或 SQL_LONGVARBINARY (image) 資料行使用 SQLPutData 傳送 65,535 個位元組以上的資料 (針對 SQL Server 4.21a 版) 或 400 KB 的資料 (針對 SQL Server 6.0 版和更新版本) 時,適用下列限制:
參考的參數在 INSERT 陳述式中可以是 insert_value。
參考的參數在 UPDATE 陳述式的 SET 子句中可以是 expression。
使用 6.5 版或更早版本時,取消 SQLPutData 呼叫的順序,將區塊中的資料提供給執行 SQL Server 的伺服器會造成資料行值的部分更新。 呼叫 SQLCancel 時參考的 text、ntext 或 image 資料行會設定為中繼預留位置的值。
[!附註]
SQL Server Native Client ODBC 驅動程式不支援連接到 SQL Server 6.5 版和更早版本。
診斷
有一個用於 SQLPutData: 的 SQL Server Native Client 專屬 SQLSTATE
SQLSTATE |
錯誤 |
說明 |
---|---|---|
22026 |
字串資料,長度不符 |
如果應用程式已經指定要傳送的位元組資料長度 (例如,使用 SQL_LEN_DATA_AT_EXEC(n),其中 n 大於 0),應用程式透過 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 日期/時間的改善 (ODBC)>。
大型 CLR UDT 的 SQLPutData 支援
SQLPutData 支援大型 CLR 使用者定義型別 (UDT)。 如需詳細資訊,請參閱<大型 CLR 使用者定義型別 (ODBC)>。