O que é paginação?

Paginação é o processo de dividir grandes dados em conjuntos de dados menores em páginas discretas. É amplamente utilizado em aplicações web.

Como funciona a paginação no MS SQL Server?

Dentro MS SQL Serverpodemos obter a funcionalidade de paginação usando OFFSET e FETCH cláusulas com ORDER BY em SELECT declaração.

  • OFFSET: representa o número de linhas a serem ignoradas do conjunto de resultados. Deve ser 0 ou maior que 0.
  • FETCH:Representa o número de linhas a serem exibidas no resultado.

Pontos importantes a serem considerados ao usar OFFSET e FETCH:

  • ORDER BY é obrigatório para o uso OFFSET FETCH Cláusula.
  • OFFSET é obrigatório e FETCH é opcional.
  • TOP cláusula não pode ser usada em SELECT declaração com OFFSET FETCH.

Vejamos exemplos:

No exemplo abaixo, OFFSET 0 e FETCH NEXT 5 ROWS kip nenhuma linha e retornar as próximas 5 linhas no conjunto de dados, que são as primeiras 5 linhas no conjunto de dados.

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY

DESLIZE 0 e BUSQUE AS PRÓXIMAS 5 LINHAS

No exemplo abaixo, OFFSET 3 e FETCH NEXT 5 ROWS significa pular as primeiras 3 linhas e retornar as próximas 5 linhas no conjunto de dados.

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 3 ROWS
FETCH NEXT 5 ROWS ONLY

DESLIZE 3 e BUSQUE AS PRÓXIMAS 5 LINHASPageNumberRowsOfPage

  • PageNumber — Representa o número da página
  • RowsOfPage — Representa o número de linhas em uma página

Agora, para calcular o número de linhas a serem ignoradas quando passarmos para a próxima página formul(@PageNumber-1) * @RowsOfPage está sendo usado em OFFSETe o número de linhas será retornado em FETCH.

Aqui, PageNumber é 2 e RowsOfPage é 5, o que significa retornar o conjunto de dados para a página número 2.

DECLARE @PageNumber AS INT
       ,@RowsOfPage AS INT

SET @PageNumber=2
SET @RowsOfPage=5

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET (@PageNumber-1) * @RowsOfPage ROWS
FETCH NEXT @RowsOfPage ROWS ONLY

OFFSET (@PageNumber-1) * @ RowsofPage e FETCH NEXT @RowsOfPage ROWS

Conclusão

Na aplicação em tempo real, essa lógica completa pode ser escrita no procedimento armazenado que é chamado ao clicar no botão “Próximo” ou número da página na aplicação web para exibir o conjunto de registros na página.

Todo o Como paginar no MS SQL Server usando OFFSET e FETCH [Simple] métodos que mencionei funcionaram bem. Obrigado por ler e por favor comente abaixo com seus pensamentos sobre este artigo e compartilhe signalfix.net com seus amigos.