FETCH
Recupera linhas usando um cursor. Para obter informações sobre como declarar um cursor, consulte DECLARE.
FETCH recupera linhas com base na posição atual do cursor. Quando um cursor é criado, ele é posicionado antes da primeira linha. Depois de um comando FETCH, o cursor é posicionado na última linha recuperada. Se FETCH for executado até o final das linhas disponíveis, como um comando FETCH ALL, o cursor é posicionado depois da última linha.
FORWARD 0 busca a linha atual sem mover o cursor, ou seja, procura a linha buscada mais recentemente. Se o cursor estiver posicionado antes da primeira linha ou depois da última linha, nenhuma linha será retornada.
Quando a primeira linha do cursor é buscada, o conjunto inteiro de resultados é materializado no nó líder, na memória ou em disco, se necessário. Devido ao impacto da performance negativa potencial de usar cursores com grandes conjuntos de resultado, recomendamos abordagens alternativas sempre que possível. Para obter mais informações, consulte Considerações sobre a performance ao usar cursores.
Para obter mais informações, consulte DECLARECLOSE.
Sintaxe
FETCH [ NEXT | ALL | {FORWARD [ count | ALL ] } ] FROM cursor
Parâmetros
- NEXT
-
Busca a próxima linha. Esse é o padrão.
- ALL
-
Busca todas as linhas restantes. (Mesmo que FORWARD ALL.) ALL não é compatível para clusters de nó único.
- FORWARD [ contagem | ALL ]
-
Busca a contagem das próximas linhas, ou todas as linhas restantes.
FORWARD 0
busca a linha atual. Para clusters de nó único, o valor máximo para a contagem é1000
. FORWARD ALL não é compatível para clusters de nó único. - cursor
-
Nome do novo cursor.
Exemplo de FETCH
O exemplo a seguir declara um cursor denominado LOLLAPALOOZA para selecionar informações de vendas para o evento Lollapalooza e busca linhas do conjunto de resultados usando o cursor:
-- 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;