Cláusula OFFSET FETCH (SQL Server Compact)
A cláusula OFFSET-FETCH fornece uma opção para buscar apenas uma janela ou página de resultaods do conjunto de resultados. A cláusula OFFSET-FETCH pode ser usada somente com a cláusula ORDER BY.
Sintaxe
[ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n][<offset_fetch>] ]
<offset_fetch> ::= {OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS } [FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY]}
Argumentos
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
Especifica o número de linhas a serem ignoradas antes de iniciar o retorno de linhas da expressão de consulta. O argumento da cláusula OFFSET pode ser um inteiro ou uma expressão maior ou igual a zero. Você pode usar tanto ROW quanto ROWs.FETCH { FIRST|NEXT } <rowcount expression> { ROW|ROWS } ONLY
Especifica o número de linhas a serem retornadas depois do processamento da cláusula OFFSET. O argumento da cláusula OFFSET pode ser um inteiro ou uma expressão maior ou igual a zero. Você pode usar tanto ROW quanto ROWs. Da mesma forma, você pode usar tanto FIRST quanto NEXT.
Limitações no uso de OFFSET-FETCH
A cláusula ORDER BY é obrigatória para usar as cláusulas OFFSET e FETCH.
A cláusula ORDER BY é obrigatória com FETCH. Você não pode nunca usar ORDER BY … FETCH.
TOP não pode ser combinada com OFFSET e FETCH na mesma expressão de consulta.
A expressão rowcount de OFFSET/FETCH pode ser um valor aritmético, uma constante ou expressão parametrizada que retornará um valor inteiro. A expressão rowcount não tem suporte para subconsultas escalares.
Exemplo
Os exemplos a seguir demonstram o uso da cláusula OFFSET-FETCH com ORDER BY.
Exemplo 1 Ignora as primeiras 10 linhas de um conjunto de resultados classificado e retorna as linhas restantes.
SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;
Exemplo 2- Ignora as primeiras 10 linhas de um conjunto de resultados classificado e retorna as cinco próximas linhas.
SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;