Comment puis-je avoir une variable dynamique définissant le nombre de lignes à renvoyer dans SQL Server? La syntaxe ci-dessous n'est pas valide dans SQL Server 2005+:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
SELECT TOP (@count) * FROM SomeTable
Cela ne fonctionnera qu'avec SQL 2005+
La syntaxe "select top (@var) ..." ne fonctionne que dans SQL SERVER 2005+. Pour SQL 2000, vous pouvez effectuer les tâches suivantes:
set rowcount @top
select * from sometable
set rowcount 0
J'espère que cela t'aides
Oisin.
(édité pour remplacer @@ rowcount par rowcount - merci augustlights)
Dans l'exemple de x0n, cela devrait être:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
declare @rows int = 10
select top (@rows) *
from Employees
order by 1 desc -- optional to get the last records using the first column of the table
Il est également possible d'utiliser du SQL dynamique et de l'exécuter avec la commande exec:
declare @sql nvarchar(200), @count int
set @count = 10
set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
exec (@sql)
Ou vous venez de mettre la variable entre parenthèses
DECLARE @top INT = 10;
SELECT TOP (@Top) *
FROM <table_name>;