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

Résolu
cs_FPatrick Messages postés 122 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 8 août 2014 - 5 janv. 2010 à 13:01
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 - 11 janv. 2010 à 13:53
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

crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
5 janv. 2010 à 14:01
Declare @CmdSql varchar(100)

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

exec (@cmdSql)
3
cs_FPatrick Messages postés 122 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 8 août 2014 1
6 janv. 2010 à 08:02
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.
0
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
11 janv. 2010 à 13:53
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
0
Rejoignez-nous