Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Ruft Zeilen mittels eines Cursors ab. Weitere Informationen zum Deklarieren eines Cursors finden Sie unter DECLARE.
FETCH ruft Zeilen auf der Basis der aktuellen Position innerhalb des Cursors ab. Wenn ein Cursor erstellt wird, wird er vor der ersten Zeile positioniert. Nach einem FETCH befindet sich der Cursor in der letzten abgerufenen Zeile. Wenn FETCH das Ende der verfügbaren Zeilen erreicht, beispielsweise infolge eines FETCH ALL, befindet sich der Cursor hinter der letzten Zeile.
FORWARD 0 ruft die aktuelle Zeile ab, ohne den Cursor zu verschieben, d. h., sie ruft die zuletzt abgerufene Zeile ab. Wenn sich der Cursor vor der ersten oder nach der letzten Zeile befindet, wird keine Zeile zurückgegeben.
Wenn die erste Zeile eines Cursors abgerufen wird, wird der gesamte Ergebnissatz auf dem Führungsknoten im Arbeitsspeicher oder auf der Festplatte umgesetzt, wenn nötig. Aufgrund der potenziellen negativen Auswirkungen der Verwendung von Cursors mit großen Ergebnissätzen wird empfohlen, alternative Ansätze anzuwenden, wann immer möglich. Weitere Informationen finden Sie unter Überlegungen in Bezug auf die Leistung bei Verwendung von Cursors.
Weitere Informationen finden Sie unter DECLARE, CLOSE.
Syntax
FETCH [ NEXT | ALL | {FORWARD [ count | ALL ] } ] FROM cursor
Parameter
- NEXT
-
Ruft die nächste Zeile ab. Dies ist die Standardeinstellung.
- ALL
-
Ruft alle verbleibenden Zeilen ab. (Verhält sich wie FORWARD ALL.) ALL wird nicht für Einzelknoten-Cluster unterstützt.
- FORWARD [ count | ALL ]
-
Holt die nächste Zahl von Zeilen oder alle erbleibenden Zeilen.
FORWARD 0
holt die aktuelle Zeile. Im Fall von Einzelknoten-Clustern ist der maximal zulässige Wert für „count“1000
. FORWARD ALL wird nicht für Einzelknoten-Cluster unterstützt. - cursor
-
Der Name des neuen Cursors.
Beispiel für FETCH
Im folgenden Beispiel wird ein Cursor namens LOLLAPALOOZA deklariert, um Verkaufsinformationen für das Lollapalooza-Ereignis auszuwählen und dann mittels des Cursors Zeilen aus dem Ergebnissatz abzurufen:
-- Begin a transaction
begin;
-- Declare a cursor
declare lollapalooza cursor for
select eventname, starttime, pricepaid/qtysold as costperticket, qtysold
from sales, event
where sales.eventid = event.eventid
and eventname='Lollapalooza';
-- Fetch the first 5 rows in the cursor lollapalooza:
fetch forward 5 from lollapalooza;
eventname | starttime | costperticket | qtysold
--------------+---------------------+---------------+---------
Lollapalooza | 2008-05-01 19:00:00 | 92.00000000 | 3
Lollapalooza | 2008-11-15 15:00:00 | 222.00000000 | 2
Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 3
Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 4
Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 1
(5 rows)
-- Fetch the next row:
fetch next from lollapalooza;
eventname | starttime | costperticket | qtysold
--------------+---------------------+---------------+---------
Lollapalooza | 2008-10-06 14:00:00 | 114.00000000 | 2
-- Close the cursor and end the transaction:
close lollapalooza;
commit;