Comment puis-je avoir une variable dynamic définissant la quantité 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 faire:
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
Il est également possible d’utiliser le SQL dynamic 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 ;
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