GB | BIG5
|
| 首頁 > 數據庫 > 其它 > 正文 |
 |
| PostgreSQL7.0手冊-用戶手冊-19. SQL命令-FETCH |
| 編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 22:01:25) |
FETCH
名稱
FETCH 用遊標獲取行
用法
FETCH [ selector ] [ count ] { IN | FROM } cursor
FETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor
輸入
selector
selector 定義抓取的方向.它可以是下述之一:
FORWARD
抓取面的行.selector 省略時這是缺省值.
BACKWARD
抓取前面行.
RELATIVE
為 SQL92 兼容設置的多余鍵字.
count
count 決定抓取幾行.可以是下列之一:
#
一個表明抓取幾行的整數.注意負整數等效改變 FORWARD 和 BACKWARD 屬性.
ALL
檢索所有剩余的行.
NEXT
等效聲明 count 為 1.
PRIOR
等效聲明 count 為 -1.
cursor
一個打開的遊標的名稱.
輸出
FETCH 返回由聲明的遊標定義的查詢的結果.如果查詢失敗,將返回下面的信息:
NOTICE: PerformPortalFetch: portal "cursor" not found
如果 cursor 沒有定義,返回此信息.遊標必須在一個事務塊中定義.
NOTICE: FETCH/ABSOLUTE not supported, using RELATIVE
Postgres 不支持遊標的絕對定位.
ERROR: FETCH/RELATIVE at current position is not supported
SQL92 允許我們用下面語句在"當前位置"不停地檢索遊標
FETCH RELATIVE 0 FROM cursor
Postgres 目前不支持這種用法;實際上,零被保留用檢索所有行,等效聲明 ALL 關鍵字.如果使用 RELATIVE 關鍵字, Postgres 假設用戶試圖使用 SQL92 的特性,因而返回此錯誤.
描述
FETCH 允許用戶使用遊標檢索行.所要檢索的行數用 # 聲明.如果遊標中剩下的行小 #,那只有那些可用的抓過來.用關鍵字 ALL 代替數字將導致遊標中所有剩余行被抓過來.記錄可以 FORWARD (向前)抓,也可以 BACKWARD (向)抓.缺省的方向是 FORWARD (向前).
小技巧: 可以用負數作為行記數,符號等效顛倒抓取方向關鍵字(FORWARD 和 BACKWARD).例如, FORWARD -1 等效 BACKWARD 1.
注意
注意 FORWARD 和 BACKWARD 關鍵字是 Postgres擴展.SQL92 語法也支持,在此命令的第二種形式中聲明.詳細的兼容性信息見下面.
在遊標中更新數據還不被 Postgres 支持,因為將遊標更新影射回基本表是不太可能的,這一點對 VIEW 更新也一樣.因而用戶必須顯式的使用 UPDATE 命令來更新數據.
遊標只能用事務內部,因為它們存儲的數據跨越了多個用戶的查詢.
使用 MOVE 語句改變遊標位置.使用 DECLARE 語句定義一個遊標.使用 BEGIN,COMMIT,和 ROLLBACK 語句獲取更多關事務的信息.
用法
下面的例子用一個遊標跨過一個表。
-- 建立一個遊標:
BEGIN WORK;
DECLARE liahona CURSOR FOR SELECT * FROM films;
-- 抓取頭 5 行到遊標 liahona 裡:
FETCH FORWARD 5 IN liahona;
code | title | did | date_prod | kind | len
-------+-------------------------+-----+------------+----------+-------
BL101 | The Third Man | 101 | 1949-12-23 | Drama | 01:44
BL102 | The African Queen | 101 | 1951-08-11 | Romantic | 01:43
JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25
P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
P_302 | Becket | 103 | 1964-02-03 | Drama | 02:28
-- 抓取前面行:
FETCH BACKWARD 1 IN liahona;
code | title | did | date_prod | kind | len
-------+---------+-----+------------+--------+-------
P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
-- 關閉遊標並提交工作:
CLOSE liahona;
COMMIT WORK;
兼容性
SQL92
注意:非嵌入式遊標的使用是 Postgres 擴展.遊標的語法和用途與定義與 SQL92裡定義的嵌入式用法相似。
SQL92 允許遊標在 FETCH 中的絕對定位,並且允許將結果放在顯式的變量裡.
FETCH ABSOLUTE #
FROM cursor
INTO :variable [, ...]
ABSOLUTE
遊標將放置在寫明的絕對的行數的位置上.在 Postgres 中所有的行數都是相對數量,所以這一功能不支持.
:variable
目標宿主變量.
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-VACUUM (2001-04-21 22:16:33) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-UPDATE (2001-04-21 22:16:12) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-UNLISTEN (2001-04-21 22:15:44) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-TRUNCATE (2001-04-21 22:15:24) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SHOW (2001-04-21 22:15:01) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SET (2001-04-21 22:14:42) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SELECT INTO (2001-04-21 22:14:19) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SELECT (2001-04-21 22:14:01) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-ROLLBACK (2001-04-21 22:13:41) PostgreSQL7.0手冊-用戶手冊-19. SQL命令-REVOKE (2001-04-21 22:13:18)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |