Sql Serveur 2000 - Utilisateur de SELECT TOP avec un paramètre dans une procédur [Résolu]

Signaler
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014
-
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
-
Bonjour,

Dans une procédure stockée, je souhaiterais mettre en paramètre le SELECT TOP pour ensuite faire un traitement derrière.

Exemple

CREATE PROCEDURE testTOP
@categorie integer
AS

SELECT TOP @categorie PERCENT dbo.toto.*
FROM dbo.toto
WHERE (id_toto > 0)
.....

Mais j'ai un message d'erreur à l'enregistrement de la procédure sur SELECT TOP @categorie

Je voudrais passer en paramètre de la procédure cet argument pour mes traitements derrière (ex :SELECT TOP 10 ou SELECT TOP 55)

J'espère que j'ai été assez clair dans mes explications.
En vous remerciant pour vos recherches, bonne journée.

3 réponses

Messages postés
302
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
4 février 2011

Declare @CmdSql varchar(100)

set @CmdSql='SELECT TOP ' + convert(varchar,@categorie)+' PERCENT dbo.toto.*
FROM dbo.toto
WHERE (id_toto > 0)'

exec (@cmdSql)
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014

Bonjour,

Merci pour votre réponse rapide, je n'avais pas regardé entre temps (je cherchais).

Dommage de faire ce genre de manipulation pour y arriver, cela aurait été bien d'avoir accès en direct.

Bonne journée.
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
6
Bonjour

Avec SQL Server 2000, il y la possibilité d'utiliser SET ROWCOUNT :

DECLARE @var int
SET @var = 5

SET ROWCOUNT @var

SELECT * from MaTable

A partir de SQL Server 2005, le SET ROWCOUNT est indiqué comme étant supprimé dans une prochaine version et remplacé par une variante du TOP :

DECLARE @var int
SET @var = 5

SELECT TOP(@var) * from MaTable

Attention, les parenthèses deviennent obligatoire avec cette nouvelle syntaxe.

Cordialement
------------
Christian Robert
http://blogs.codes-sources.com/christian
MVP SQL Server