Ako môžem mať dynamickú premennú nastavujúcu množstvo riadkov, ktoré sa majú vrátiť na server SQL Server? Nižšie nie je platná syntax v SQL Server 2005+:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
odpovede:
453 pre odpoveď № 1SELECT TOP (@count) * FROM SomeTable
Toto bude fungovať len s SQL 2005+
37 pre odpoveď č. 2
Syntax "select top (@var) ..." funguje len v SQL SERVER 2005+. Pre SQL 2000 môžete urobiť:
set rowcount @top
select * from sometable
set rowcount 0
Dúfam, že to pomôže
Oisin.
(upravené na nahradenie @@ rowcount s rowcount - vďaka augustlights)
11 pre odpoveď č. 3
V príklade x0n by to malo byť:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
http://msdn.microsoft.com/en-us/library/ms188774.aspx
3 pre odpoveď č. 4
Je tiež možné použiť dynamický SQL a spustiť ho príkazom exec:
declare @sql nvarchar(200), @count int
set @count = 10
set @sql = N"select top " + cast(@count as nvarchar(4)) + " * from table"
exec (@sql)
2 pre odpoveď № 5
Alebo jednoducho umiestnite premennú do zátvoriek
DECLARE @top INT = 10;
SELECT TOP (@Top) *
FROM <table_name>;
1 pre odpoveď č. 6
declare @rows int = 10
select top (@rows) *
from Employees
order by 1 desc -- optional to get the last records using the fist column of the table