Comment faire de la pagination en SQL Server 2008 ?
Je pense que ce code ne fonctionne pas. Avez-vous testé ce code ? (il devrait remplacer la table "PageNumbers" par la "@Table".
Comment faire de la pagination en SQL Server 2008 ?
Vous pouvez utiliser ROW_NUMBER() :
Renvoie le numéro séquentiel d'une ligne dans une partition d'un ensemble de résultats, en commençant par 1 pour la première ligne de chaque partition.
Exemple :
WITH CTEResults AS
(
SELECT IDColumn, SomeField, DateField, ROW_NUMBER() OVER (ORDER BY DateField) AS RowNum
FROM MyTable
)
SELECT *
FROM CTEResults
WHERE RowNum BETWEEN 10 AND 20;
Vous pouvez essayer quelque chose comme
DECLARE @Table TABLE(
Val VARCHAR(50)
)
DECLARE @PageSize INT,
@Page INT
SELECT @PageSize = 10,
@Page = 2
;WITH PageNumbers AS(
SELECT Val,
ROW_NUMBER() OVER(ORDER BY Val) ID
FROM @Table
)
SELECT *
FROM PageNumbers
WHERE ID BETWEEN ((@Page - 1) * @PageSize + 1)
AND (@Page * @PageSize)
Je pense que ce code ne fonctionne pas. Avez-vous testé ce code ? (il devrait remplacer la table "PageNumbers" par la "@Table".
Comme dans SQL Server 2005 .
SQL Server 2012 offre une fonctionnalité de pagination (voir http://www.codeproject.com/Articles/442503/New-features-for-database-developers-in-SQL-Server )
En SQL2008, vous pouvez le faire de cette façon :
declare @rowsPerPage as bigint;
declare @pageNum as bigint;
set @rowsPerPage=25;
set @pageNum=10;
With SQLPaging As (
Select Top(@rowsPerPage * @pageNum) ROW_NUMBER() OVER (ORDER BY ID asc)
as resultNum, *
FROM Employee )
select * from SQLPaging with (nolock) where resultNum > ((@pageNum - 1) * @rowsPerPage)
Prooven ! Il fonctionne et s'adapte de manière cohérente.
Ces deux articles contiennent les informations qui m'ont été utiles il y a quelque temps :
http://www.asp101.com/articles/gal/effectivepaging/default.asp , http://aspnet.4guysfromrolla.com/articles/031506-1.aspx
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Il n'y a pas de MSSQL 2008. Tu voulais dire, "SQL Server 2008"