Sql server - les différentes méthodes pour faire un limit sous sql server

Contenu du snippet

Tout le monde connait bien le TOP sous SQL Server, mais il possède un problème, car il est difficilement utilisable dans une procédure stockée ou le nombre de résultats doit être variable.
Voila donc une vision de quelques solutions existantes.

Source / Exemple :


DECLARE @Limit 	AS INT
SET @Limit =	3

---------------------------------------------
-- Activation de la limite RowCount
SET ROWCOUNT 	@Limit

---------------------------------------------
-- Requette utilisant la limite fixée
SELECT 
	*
FROM
	dbo.Employees
ORDER BY
	LastName;

---------------------------------------------
-- Malgré le TOP fixé à 7, c'est le ROWCount qui est prioritaire
SELECT 
	TOP 7	*
FROM
	dbo.Employees
ORDER BY
	LastName;

---------------------------------------------
-- Annulation de la limite
SET ROWCOUNT 0

---------------------------------------------
-- Selection avec un TOP pour controler que la limite ne soit plus gérée
SELECT 
	TOP 7	*
FROM
	dbo.Employees
ORDER BY
	LastName;

---------------------------------------------
-- Pour utiliser le paramètre de la limite dans un TOP
DECLARE @SQL	AS VARCHAR(8000)

SET @SQL = 'SELECT TOP '+ CONVERT(VARCHAR(5), @Limit) +' * FROM dbo.Employees ORDER BY LastName';

EXECUTE (@SQL);
---------------------------------------------

Conclusion :


Bon coding

Romelard Fabrice

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.