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
NULLou 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 comORDER 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
Previous: Consulta condicional com WHERE