OVH Cloud OVH Cloud

SELECT TOP @Variable

6 réponses
Avatar
JM
Bonjour.

A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
n'est pas acceptée, cad qu'on ne peut coller une variable après une
instruction TOP.

Si je ne me trompe pas, comment faire pour sélectionner les X premiers
enregistrements, X étant une variable ?

Mille mercis !!!

6 réponses

Avatar
PePiCK
Une façon de faire

CREATE PROCEDURE sp_TestTOP( @top smallint ) AS

DECLARE @sql nvarchar(1000)

SET @sql = 'SELECT TOP ' + CAST( @top as nvarchar(4) ) + ' Champ1, Champ2
FROM VotreTable'
EXEC sp_ExecuteSQL @sql

PePICK



"JM" wrote in message
news:%
Bonjour.

A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
n'est pas acceptée, cad qu'on ne peut coller une variable après une
instruction TOP.

Si je ne me trompe pas, comment faire pour sélectionner les X premiers
enregistrements, X étant une variable ?

Mille mercis !!!




Avatar
JM
Ah, merci.


"PePiCK" a écrit dans le message de
news:
Une façon de faire

CREATE PROCEDURE sp_TestTOP( @top smallint ) AS

DECLARE @sql nvarchar(1000)

SET @sql = 'SELECT TOP ' + CAST( @top as nvarchar(4) ) + ' Champ1, Champ2
FROM VotreTable'
EXEC sp_ExecuteSQL @sql

PePICK



"JM" wrote in message
news:%
> Bonjour.
>
> A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
> n'est pas acceptée, cad qu'on ne peut coller une variable après une
> instruction TOP.
>
> Si je ne me trompe pas, comment faire pour sélectionner les X premiers
> enregistrements, X étant une variable ?
>
> Mille mercis !!!
>
>




Avatar
Steve Kass
JM,

Dans SQL Server 2005, une variable ou expression est permise
après TOP:

select top (@n) x,y,z
from T
order by <liste>

Dans SQL Server 2000, il y a SET ROWCOUNT :

declare @n int
set @n = 100
SET ROWCOUNT @n
SELECT x,y,z
from T
order by <liste>
-- donne 100 lignes
SET ROWCOUNT 0 -- ne pas oublier de remettre

Je déconseille fortement le SQL dynamique, qui pose
une risque de "SQL injection", et qui n'est pas facile
à maintenir.

Steve Kass
Drew University

JM wrote:

Bonjour.

A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
n'est pas accept嶪, cad qu'on ne peut coller une variable apr鋊 une
instruction TOP.

Si je ne me trompe pas, comment faire pour s幨ectionner les X premiers
enregistrements, X 彋ant une variable ?

Mille mercis !!!






Avatar
JM
Bonjour.

C'est bien SQL 2000.

Merci.

"Steve Kass" a écrit dans le message de
news:uR$
JM,

Dans SQL Server 2005, une variable ou expression est permise
après TOP:

select top (@n) x,y,z
from T
order by <liste>

Dans SQL Server 2000, il y a SET ROWCOUNT :

declare @n int
set @n = 100
SET ROWCOUNT @n
SELECT x,y,z
from T
order by <liste>
-- donne 100 lignes
SET ROWCOUNT 0 -- ne pas oublier de remettre

Je déconseille fortement le SQL dynamique, qui pose
une risque de "SQL injection", et qui n'est pas facile
à maintenir.

Steve Kass
Drew University

JM wrote:

>Bonjour.
>
>A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
>n'est pas accept?, cad qu'on ne peut coller une variable apr? une
>instruction TOP.
>
>Si je ne me trompe pas, comment faire pour s?ectionner les X premiers
>enregistrements, X ?ant une variable ?
>
>Mille mercis !!!
>
>
>
>


Avatar
Romelard Fabrice [MVP]
Bonsoir,
Tout est expliqué ici :
-
http://www.sqlfr.com/codes/SQL-SERVER-DIFFERENTES-METHODES-POUR-FAIRE-LIMIT-SOUS_35530.aspx

--
Cordialement.

Romelard Fabrice [MVP]

"JM" a écrit dans le message de news:
%
Bonjour.

A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
n'est pas acceptée, cad qu'on ne peut coller une variable après une
instruction TOP.

Si je ne me trompe pas, comment faire pour sélectionner les X premiers
enregistrements, X étant une variable ?

Mille mercis !!!




Avatar
JM
En effet, tout est expliqué.

Merci beaucoup.


"Romelard Fabrice [MVP]" a écrit dans le message de
news:
Bonsoir,
Tout est expliqué ici :
-



http://www.sqlfr.com/codes/SQL-SERVER-DIFFERENTES-METHODES-POUR-FAIRE-LIMIT-SOUS_35530.aspx

--
Cordialement.

Romelard Fabrice [MVP]

"JM" a écrit dans le message de news:
%
> Bonjour.
>
> A priori et sauf erreur de ma part, la syntaxe Select top @toto FROM...
> n'est pas acceptée, cad qu'on ne peut coller une variable après une
> instruction TOP.
>
> Si je ne me trompe pas, comment faire pour sélectionner les X premiers
> enregistrements, X étant une variable ?
>
> Mille mercis !!!
>
>