FETCH

Suportado a partir do Oracle 12c, serve para limitar a quantidade de linhas retornadas pela consulta e implementar paginação, equivalente ao LIMIT do MySQL.

Sintaxe completa

[ OFFSET offset ROWS ]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]Code language: CSS (css)
1. Cláusula OFFSET (opcional)

Função:pular as N primeiras linhas, muito utilizada para paginação.

  • Quando omitido, o offset vale 0, a leitura começa na primeira linha
  • Offset negativo: interpretado como valor 0
  • Offset com valor NULL ou maior que o total de linhas: nenhuma linha é retornada
  • Offset com casas decimais: a parte decimal é descartada, mantém‑se apenas o valor inteiro
2. Cláusula FETCH

Função: define quantas linhas devem ser retornadas, aceita quantidade de linhas ou porcentagem.

  • ONLY: retorna exatamente o número de linhas especificado (mais comum)
  • WITH TIES: retorna também registros com mesmo valor do campo de ordenação da última linha obtida. Deve ser usado obrigatoriamente com ORDER BY

Códigos de exemplo

Pegar os 5 primeiros registros ordenados por name decrescente
SELECT *
FROM student
ORDER BY name DESC
FETCH NEXT 5 ROWS ONLY;
Buscar as 2 primeiras linhas
select * from student fetch next 2 rows only;Code language: JavaScript (javascript)

Saída: retorna os dois primeiros registros jim, lisa.

Paginação: pular 3 linhas, ler 4 linhas (página 2, 4 itens por página)
SELECT *
FROM student
ORDER BY id
OFFSET 3 ROWS
FETCH NEXT 4 ROWS ONLY;
Retorno por porcentagem, obter 10% de todos os dados
SELECT *
FROM student
FETCH NEXT 10 PERCENT ROWS ONLY;
Uso do WITH TIES (incluir registros empatados)
SELECT *
FROM student
ORDER BY score DESC
FETCH NEXT 3 ROWS WITH TIES;

Se múltiplos registros tiverem a mesma pontuação do terceiro lugar, todos serão retornados, o resultado final pode ter mais de 3 linhas.

FETCH

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *