Man page - fetch(7)
Manual
FETCH
NAMESYNOPSIS
DESCRIPTION 描 述
PARAMETERS 引 數
OUTPUTS 輸 出
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 相 容 性
譯 者
跋
NAME
FETCH - 用 遊 標 從 查 詢 中 抓 取 行
SYNOPSIS
FETCH [ direction { FROM | IN } ] cursorname
where direction can be empty or one of:
NEXT
PRIOR
FIRST
LAST
ABSOLUTE
count
RELATIVE
count
count
ALL
FORWARD
FORWARD
count
FORWARD ALL
BACKWARD
BACKWARD
count
BACKWARD ALL
DESCRIPTION 描 述
FETCH 使 用 遊 標 檢 索 行 。
一 個 遊 標 有 一 個 由 FETCH 使 用 的 相 關 聯 的 位 置 。 遊 標 得 位 置 可 以 在 查 詢 結 果 的 第 一 行 之 前 , 或 者 在 結 果 中 的 任 意 行 , 或 者 在 結 果 的 最 後 一 行 之 後 。 在 建 立 完 之 後 , 遊 標 是 放 在 第 一 行 之 前 的 。 在 抓 取 了 一 些 行 之 後 , 遊 標 放 在 檢 索 到 的 最 後 一 行 上 。 如 果 FETCH 抓 完 了 所 有 可 用 行 , 那 麼 它 就 停 在 最 後 一 行 後 面 , 或 者 在 向 前 抓 去 的 情 況 下 是 停 在 第 一 行 前 面 。 FETCH ALL 或 者 FETCH BACKWARD ALL 將 總 是 把 遊 標 的 位 置 放 在 最 後 一 行 或 者 在 第 一 行 前 面 。
NEXT, PRIOR, FIRST, LAST, ABSOLUTE, RELATIVE 形 式 在 恰 當 地 移 動 遊 標 之 後 抓 取 一 個 行 。 如 果 沒 有 資 料 行 了 , 那 麼 返 回 一 個 空 的 結 果 , 那 麼 遊 標 就 會 停 在 查 詢 結 果 的 最 後 一 行 之 後 或 者 在 第 一 行 之 前 。
FORWARD 和 BACKWARD 形 式 在 向 前 或 者 向 後 移 動 的 過 程 中 抓 取 指 定 的 行 數 , 然 後 把 遊 標 定 位 在 最 後 返 回 的 行 上 ( 或 者 是 , 如 果 count 大 於 可 用 的 行 數 , 在 所 有 行 之 前 或 之 後 。 )
RELATIVE 0, FORWARD 0, 和 BACKWARD 0 都 要 求 在 不 移 動 遊 標 的 前 提 下 抓 取 當 前 行 - - - 也 就 是 重 新 抓 取 最 近 剛 剛 抓 取 過 的 行 。 除 非 遊 標 定 位 在 第 一 行 之 前 或 者 最 後 一 行 之 後 , 這 個 動 作 都 應 該 成 功 , 而 在 那 兩 種 情 況 下 , 不 返 回 任 何 行 。
PARAMETERS 引 數
direction
direction 定 義 抓 取 的 方 向 和 抓 取 的 行 數 。 它 可 以 是 下 述 之 一 :
|
NEXT |
抓 取 下 一 行 。 direction 省 略 時 這 是 預 設 值 。
|
PRIOR |
抓 取 前 面 一 行 。
|
FIRST |
抓 取 查 詢 的 第 一 行 ( 和 ABSOLUTE 1 相 同 ) 。
|
LAST |
抓 取 查 詢 的 最 後 一 行 ( 和 ABSOLUTE -1 相 同 ) 。
ABSOLUTE count
抓 取 查 詢 中 第 count 行 , 或 者 , 如 果 count < 0, 從 查 詢 結 果 末 尾 抓 取 第 abs(count)行 。 如 果 count 超 出 了 範 圍 , 那 麼 定 位 在 第 一 行 之 前 和 最 後 一 行 之 後 的 位 置 ; 特 別 是 ABSOLUTE 0 定 位 在 第 一 行 之 前 。
RELATIVE count
抓 取 隨 後 的 第 count 行 , 或 者 , 如 果 count < 0 的 時 候 , 抓 取 前 面 的 第 abs(count) 行 。 如 果 有 資 料 的 話 , RELATIVE 0 重 新 抓 取 當 前 行 。
|
count |
抓 取 下 面 的 count 行 ( 和 FORWARD count 一 樣 ) 。
|
ALL |
抓 取 所 有 剩 餘 的 行 ( 和 FORWARD ALL 一 樣 ) 。
FORWARD
抓 取 下 面 一 行 ( 和 NEXT) 一 樣 。
FORWARD count
抓 取 下 面 count 行 。 FORWARD 0 重 新 抓 取 當 前 行 。
FORWARD ALL
抓 取 所 有 剩 餘 行 。
BACKWARD
抓 取 前 面 一 行 ( 和 PRIOR 一 樣 ) 。
BACKWARD count
抓 取 前 面 count 行 ( 向 後 掃 描 ) 。 BACKWARD 0 重 新 抓 取 當 前 行 。
BACKWARD ALL
抓 取 所 有 前 面 的 行 ( 向 後 掃 描 ) 。
|
count |
count 可 能 是 一 個 有 符 號 的 整 數 常 量 , 決 定 要 抓 取 的 行 數 和 方 向 。 對 於 FORWARD 和 BACKWARD 的 情 況 , 宣 告 一 個 帶 負 號 的 count 等 效 於 改 變 FORWARD 和 BACKWARD 的 方 向 。 |
cursorname
一 個 開 啟 的 遊 標 的 名 稱 。
OUTPUTS 輸 出
成 功 完 成 時 , 一 個 FETCH 命 令 返 回 一 個 形 如 下 面 的 標 記
FETCH count
這 裡 的 count 是 抓 取 的 行 數 ( 可 能 是 零 ) 。 請 注 意 在 psql 裡 , 命 令 標 籤 實 際 上 不 會 顯 示 , 因 為 psql 用 抓 取 的 行 數 取 代 了 。
NOTES 注 意
如 果 你 想 使 用 FETCH NEXT 之 外 的 任 何 FETCH 的 變 種 , 或 者 是 帶 負 數 計 數 的 FETCH FORWARD。 那 麼 定 義 遊 標 的 時 候 應 該 帶 著 SCROLL 選 項 。 對 於 簡 單 的 查 詢 , PostgreSQL 會 允 許 那 些 沒 有 帶 SCROLL 選 項 定 義 的 遊 標 也 可 以 反 向 抓 取 , 但 是 我 們 最 好 不 要 依 賴 這 個 行 為 。 如 果 遊 標 定 義 了 NO SCROLL, 那 麼 不 允 許 反 向 抓 取 。
ABSOLUTE 抓 取 不 會 比 用 相 對 位 移 移 動 到 需 要 的 資 料 行 更 快 : 因 為 下 層 的 實 現 必 須 遍 歷 所 有 中 間 的 行 。 負 數 的 絕 對 抓 取 甚 至 更 糟 糕 : 查 詢 必 須 一 直 讀 到 結 尾 才 能 找 到 最 後 一 行 , 然 後 從 那 裡 開 始 反 向 遍 歷 。 不 過 , 回 退 到 查 詢 開 頭 ( 就 像 FETCH ABSOLUTE 0) 很 快 。
在 遊 標 中 更 新 資 料 還 不 被 PostgreSQL 支 援 。
DECLARE [ declare (7)] 語 句 用 於 定 義 一 個 遊 標 。 使 用 MOVE [ move (7)] 語 句 來 改 變 遊 標 位 置 而 不 檢 索 資 料 。
EXAMPLES 例 子
下 面 的 例 子 用 一 個 遊 標 跨 過 一 個 表 。
BEGIN WORK;
-- 建
立 一 個 遊 標 :
DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;
-- 抓
取 頭 5 行 到 遊 標
liahona 裡 :
FETCH FORWARD 5 FROM 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 PRIOR FROM liahona;
code | title |
did | date_prod | kind | len
-------+---------+-----+------------+--------+-------
P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
-- 關
閉 遊 標 並 提 交
事 務 :
CLOSE liahona;
COMMIT WORK;
COMPATIBILITY 相 容 性
SQL 標 準 定 義 的 FETCH 只 用 於 嵌 入 式 環 境 下 。 這 裡 描 述 的 FETCH 變 種 是 把 結 果 資 料 像 SELECT 結 果 那 樣 返 回 , 而 不 是 把 它 放 在 宿 主 變 數 裡 。 除 了 這 點 之 外 , FETCH 和 SQL 標 準 完 全 向 上 相 容 。
涉 及 FORWARD 和 BACKWARD 的 FETCH 形 式 ( 包 括 FETCH count 和 FETCH ALL 的 形 式 , 這 個 時 候 FORWARD 是 隱 含 的 ) 是 PostgreSQL 的 擴 充 套 件 。
SQL 標 準 只 允 許 遊 標 前 面 有 FROM, 用 IN 是 一 種 擴 充 套 件 。
譯 者
Postgresql 中 文 網 站 何 偉 平 <laser@pgsqldb.org>
跋
本
頁 面 中 文 版 由
中 文 man 手 冊 頁 計
劃 提 供 。
中 文 man 手 冊 頁 計
劃 :
https://github.com/man-pages-zh/manpages-zh