我有变量@count of datatype int。我正在为这个@count设置值
我想从表中选择top @count行数。当我使用Select top @count
时,显示错误。
IF (@NewItemCount<@OldItemCount)
BEGIN
set @count=@OldItemCount-@NewItemCount
if(@count>0)
BEGIN
Delete from ItemDetails where GroupId in (Select Top @count Id from ItemDetails where GroupId=@Prm_GroupId )
END
END
错误是
'@count'附近的语法不正确。
答案 0 :(得分:3)
此位置无法使用变量。
一种解决方案是使用动态sql:构建要在字符串变量中执行的完整查询字符串并执行该操作。
答案 1 :(得分:2)
这在SQL Server 2005 没有 任何动态SQL的情况下开箱即用。
你只是缺少括号。以下作品很有魅力:
DECLARE @CNT INT
SET @CNT = 5
SELECT TOP (@CNT) *
FROM MYTABLE
答案 2 :(得分:1)
如果您打算沿着动态SQL路线走下去,我建议您阅读this excellent article first
编辑:
将@count变量括在括号中应该适合您:
IF (@NewItemCount<@OldItemCount)
BEGIN
set @count=@OldItemCount-@NewItemCount
if(@count>0)
BEGIN
Delete from ItemDetails where GroupId in (Select Top(@count) Id from ItemDetails where GroupId=@Prm_GroupId )
END
END