Cláusulas OFFSET e FETCH FIRST
As cláusulas OFFSET
e FETCH FIRST
são usadas para retornar um intervalo especificado de linhas que começam com um ponto de início em particular em um conjunto de resultados. A capacidade de limitar as linhas recuperadas dos grandes conjuntos de resultados permite “percorrer” entre os dados e aprimorar a eficiência.
A cláusula OFFSET
indica o número de linhas a ignorar antes de começar a retornar dados. Se a cláusula OFFSET
não for usada em uma instrução SELECT
, a linha inicial será 0. A cláusula FETCH FIRST
especifica o número de linhas a serem retornadas, assim como um número inteiro sem sinal maior que ou igual a 1 ou como uma porcentagem, do ponto inicial indicado na cláusula OFFSET
. Se as cláusulas OFFSET
e FETCH FIRST
forem ambas usadas em uma instrução SELECT
, a cláusula OFFSET
deve vir primeiro.
As cláusulas OFFSET
e FETCH FIRST
não são suportadas em subconsultas.
Formato da cláusula OFFSET
O formato OFFSET
é:
OFFSET [ n {ROWS | ROW} ]
n
é um número inteiro sem sinal. Se n
é maior que o número de linhas retornado em um conjunto
de resultados, então nada é retornado e nenhuma mensagem de erro é exibida.
ROWS
é o mesmo que ROW
.
Formato da cláusula FETCH FIRST
O formato FETCH FIRST
é:
FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]
n
é o número de linhas a serem retornadas. O valor padrão é 1 se n
for omitido.
n
é um número inteiro sem sinal maior que ou igual a 1, a menos que seja seguido por PERCENT
. Se n
for seguido por PERCENT
, o valor pode ser uma fração positiva ou um número inteiro sem sinal.
ROWS
é o mesmo que ROW
.
WITH TIES
deve ser usado com a cláusula ORDER BY
.
A cláusula WITH TIES
permite que mais linhas sejam retornadas do que o especificado no valor de conta FETCH
porque as linhas pares, as que não são diferenciadas com base na cláusula ORDER BY
, também são retornadas.
Retorne informações de vinte e seis linhas do conjunto de resultados classificado por sobrenome
em seguida por nome
.
SELECT id_funcionário, sobrenome, nome FROM func ORDER BY sobrenome, nome OFFSET 25 ROWS
Especifique que você deseja retornar apenas dez linhas.
SELECT id_funcionário, sobrenome, nome FROM func ORDER BY sobrenome, nome OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY
Retorne as dez linhas e suas linhas pares (linhas que não são diferenciadas com base na cláusula ORDER BY
).
SELECT id_funcionário, sobrenome, nome FROM func ORDER BY sobrenome, nome OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES