| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 30. ecpg - 在 C 裡嵌入 SQL | Fast Forward | Next |
SQL 描述符範圍是一個處理 SELECT 或者 FETCH 語句結果的更復雜的方法。一個 SQL 描述符範圍把一行數據裡的數據和原數據項 組合到了一個數據結構中。原數據在執行動態 SQL 語句的時候特別有用,因為結果 字段的性質可能是事先不知道的。
一個 SQL 描述符範圍由一個頭,(包含有關整個描述符的信息),一個或 多個項描述符範圍,(基本上每個描述結果行中的一個字段)組成。
在你可以使用 SQL 描述符範圍之前,你需要分配一個:
EXEC SQL ALLOCATE DESCRIPTOR identifier;
identifier 用做描述符範圍的 "變量名"。 如果你不再需要這個描述符,你應該釋放它:
EXEC SQL DEALLOCATE DESCRIPTOR identifier;
要使用一個描述符範圍,在一個 INTO 子句的存儲目標裡 聲明它,而不是列出宿主變量:
EXEC SQL FETCH NEXT FROM mycursor INTO DESCRIPTOR mydesc;
現在,我們應該如何從描述符範圍裡獲取數據?你可以把描述符範圍看作是 一個有著命名字段的結構。要從頭裡面檢索數值並且把它存儲到一個宿主 變量裡,使用下面的命令:
EXEC SQL GET DESCRIPTOR name :hostvar = field;
目前只定義了一個頭字段:COUNT,這個字段 告訴我們有幾個項描述符範圍存在(也就是說,在結果裡包含多少個字段)。 宿主變量需要是一個整數類型。要從項描述符範圍裡獲取一個字段, 使用下面的命令:
EXEC SQL GET DESCRIPTOR name VALUE num :hostvar = field;
num 可以是一個字符整數或者一個包含整數的 宿主變量。可能的 field 有:
結果集中的行數
實際的數據項(因此,這個字段的數據類型依賴于這個查詢)
?
未實現
描述符(標識一個空值或者一個截斷的值)
未實現
數據的字符長度
字段的名字
未實現
以字節計的數據的長度
精度(用于 numeric)
以字符計的數據長度
數據以字節計的長度
比例(用于 numeric )
字段數據類型的數值代碼