我有一个存储过程,从表中选择前X,
declare @i int ;
set @i = 10 ;
select top @i from tableNam
'@i'附近的语法不正确。
我该怎么办?
假设@i来自我的storedProcedure
中的参数答案 0 :(得分:2)
以下语法将起作用
declare @i int ;
set @i = 10 ;
select top (@i) * from sys.tables
答案 1 :(得分:2)
您必须将变量括在括号中才能使其正常工作。
declare @i int ;
set @i = 10 ;
select top (@i) * from tableNam
如果您将光标移至错误行,您将找到原因,为什么您需要这样的括号:
因此该值应为整数。此外,如果您从MSDN中看到TOP keyword,则表示使用括号。 MSDN所说的语法是:
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
答案 2 :(得分:0)
您可以使用动态查询来获得结果:
declare @i int ;
set @i = 10;
DECLARE @SqlQury VARCHAR(500) = '';
SET @SqlQury = 'SELECT TOP ' + CAST(@i AS VARCHAR) + ' * FROM tablename';
-- PRINT @SqlQury
EXEC (@SqlQury)