<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # FETCH ## Name FETCH?--?用游標從查詢中抓取行 ## Synopsis ``` FETCH [ _direction_ [ FROM | IN ] ] _cursor_name_ 這里的 `_direction_` 可以為空或下列之一: NEXT PRIOR FIRST LAST ABSOLUTE _count_ RELATIVE _count_ _count_ ALL FORWARD FORWARD _count_ FORWARD ALL BACKWARD BACKWARD _count_ BACKWARD ALL ``` ## 描述 `FETCH`使用游標檢索行。 一個游標有一個由`FETCH`使用的相關聯的位置。游標的位置可以在查詢結果的第一行之前, 或者在結果中的任意行,或者在結果的最后一行之后。剛創建完之后,游標是放在第一行之前的。 在抓取了一些行之后,游標放在檢索到的最后一行上。如果`FETCH`抓完了所有可用行, 那么它就停在最后一行后面,或者在反向抓取的情況下是停在第一行前面。`FETCH ALL` 或`FETCH BACKWARD ALL`將總是把游標的位置放在最后一行或者在第一行前面。 `NEXT`, `PRIOR`, `FIRST`, `LAST`, `ABSOLUTE`, `RELATIVE`形式在恰當地移動游標之后抓取一個行。 如果沒有數據行了,那么返回一個空的結果,此時游標就會停在查詢結果的最后一行之后或者第一行之前。 `FORWARD`和`BACKWARD`形式在向前或者向后移動的過程中抓取指定的行數, 然后把游標定位在最后返回的行上;或者是,如果`_count_` 大于可用的行數,則在所有行之前或之后。 `RELATIVE 0`, `FORWARD 0`, `BACKWARD 0` 都要求在不移動游標的前提下抓取當前行,也就是重新抓取最近剛剛抓取過的行。 除非游標定位在第一行之前或者最后一行之后,這個動作都應該成功, 而在那兩種情況下,不返回任何行。 > **Note:** 本頁描述在SQL命令級別的游標的使用。如果你嘗試在PL/pgSQL 里使用游標,那么規則是不同的,參閱[Section 40.7](#calibre_link-491)。 ## 參數 `_direction_` `_direction_`定義抓取的方向和抓取的行數。 它可以是下述之一: `NEXT` 抓取下一行(缺省)。 `PRIOR` 抓取前面一行。 `FIRST` 抓取查詢的第一行(和`ABSOLUTE 1`相同)。 `LAST` 抓取查詢的最后一行(和`ABSOLUTE -1`相同)。 `ABSOLUTE` `_count_` 抓取查詢中第`_count_`行,或者如果 `_count_`為負就從查詢結果末尾抓取第 `abs(``_count_`)行。 如果`_count_`超出了范圍, 那么定位在第一行之前和最后一行之后的位置;特別是`ABSOLUTE 0`定位在第一行之前。 `RELATIVE` `_count_` 抓取隨后的第`_count_`行,或者如果 `_count_`為負就抓取前面的第 `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`的方向。 `_cursor_name_` 一個打開的游標的名稱。 ## 輸出 成功完成時,一個`FETCH`命令返回一個形如下面的標記 ``` FETCH _count_ ``` 這里的`_count_`是抓取的行數(可能是零)。 請注意在psql里,命令標簽實際上不會顯示, 因為psql用抓取的行數代替了。 ## 注意 如果你想使用`FETCH NEXT`之外的任何`FETCH`變種,或者是帶負數計數的 `FETCH FORWARD`,那么定義游標的時候應該帶上`SCROLL`選項。 對于簡單的查詢,PostgreSQL會允許那些沒有帶`SCROLL` 選項定義的游標也可以反向抓取,但是最好不要依賴這個行為。如果游標定義了 `NO SCROLL`,那么不允許反向抓取。 `ABSOLUTE`抓取不會比用相對位移移動到需要的數據行更快: 因為下層的實現必須遍歷所有中間的行。負數的絕對抓取甚至更糟糕: 查詢必須一直讀到結尾才能找到最后一行,然后從那里開始反向遍歷。不過, 回退到查詢開頭(比如`FETCH ABSOLUTE 0`)很快。 使用[DECLARE](#calibre_link-72)語句定義一個游標。[MOVE](#calibre_link-75) 語句改變游標位置而不檢索數據。 ## 例子 下面的例子用一個游標跨過一個表。 ``` 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; ``` ## 兼容性 SQL 標準定義的`FETCH`只用于嵌入式環境下。這里描述的 `FETCH`變種是把結果數據像`SELECT`結果那樣返回, 而不是把它放在屬主變量里。除了這點之外,`FETCH` 和 SQL 標準完全向前兼容。 涉及`FORWARD`和`BACKWARD`的`FETCH`形式, 包括`FETCH` `_count_`和 `FETCH ALL`形式(此時`FORWARD`是隱含的), 是PostgreSQL的擴展。 SQL 標準只允許游標前面有`FROM`,可選的`IN`,或者把它們都省去,是一個擴展。 ## 又見 [CLOSE](#calibre_link-69), [DECLARE](#calibre_link-72), [MOVE](#calibre_link-75)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看