SQLGetLength -擷取字串值的長度

SQLGetLength() 用來擷取大型物件定位器所參照之大型物件值的長度。 在現行交易期間,已從資料來源傳回大型物件定位器 (作為提取或 SQLGetSubString() 呼叫的結果)。

語法

SQLRETURN  SQLGetLength      (SQLHSTMT          StatementHandle,  
                              SQLSMALLINT       LocatorCType,
                              SQLINTEGER        Locator,
                              SQLINTEGER        *StringLength,
                              SQLINTEGER        *IndicatorValue);

函數引數

表 1. SQLGetLength 引數
資料類型 引數 使用 說明
SQLHSTMT StatementHandle 輸入 陳述式控點。 這可以是任何已配置但目前未指派備妥陳述式的陳述式控點。
SQLSMALLINT LocatorCType 輸入 來源 LOB 定位器的 C 類型。
  • SQL_C_BLOB_LOCATOR
  • SQL_C_CLOB_LOCATOR
  • SQL_C_DBCLOB_LOCATOR
SQLINTEGER 定位器 輸入 必須設為 LOB 定位器值。
SQLINTEGER * StringLength 輸出 指定定位器的長度。1

如果指標設為 NULL ,則會傳回 SQLSTATE HY009。

SQLINTEGER * IndicatorValue 輸出 一律設為零。

1. 即使 DBCLOB 資料也以位元組為單位。

用法

SQLGetLength() 可用來決定 LOB 定位器所代表的資料值長度。 應用程式會使用它來判斷所參照 LOB 值的整體長度,以便可以選擇適當的策略來取得部分或所有 LOB 值。

Locator 引數可以包含任何有效的 LOB 定位器,這些定位器未使用 FREE LOCATOR 陳述式明確釋放,也未隱含釋放,因為建立它的交易已終止。

陳述式控點不得與任何備妥陳述式或型錄函數呼叫相關聯。

Db2® for i 在沒有隔離層次執行時,限制使用 LOB 定位器。

回覆碼

  • SQL_SUCCESS
  • SQL_SUCCESS_WITH_INFO
  • SQL_ERROR
  • SQL_INVALID_HANDLE

錯誤狀況

表 2. SQLGetLength SQLSTATE
SQL狀態 說明 說明
07006 轉換無效 引數LocatorCTypeLocator 的組合無效。
0F001 無效的 LOB 變數 指定給引數 Locator 的值未與 LOB 定位器相關聯。
58004 非預期的系統失敗 無法復原的系統錯誤。
HY003 程式類型超出範圍 引數 LocatorCType 不是 SQL_C_CLOB_LOCATOR、SQL_C_BLOB_LOCATOR 或 SQL_C_DBCLOB_LOCATOR 之一。
HY009 無效的引數值 引數 StringLengthIndicatorValue 是空值指標。
HY010 函數順序錯誤 指定的引數 StatementHandle 未處於 allocated 狀態。
HY021 無效的內部描述子 內部描述子無法定址或配置,或包含無效的值。
HYC00 驅動程式無法使用 應用程式目前連接至不支援大型物件的資料來源。

限制

當連接至不支援「大型物件」的 DB2® 伺服器時,無法使用此功能。

參照