我知道有很多问题要问这样,但是我已经尝试了几乎所有的解决方案,但仍然无法让这一段代码工作:(这就是我正在做的事情 - 我是试图找到表中的行数,以便我可以将其用作循环和删除行的计数器。
@rc
是INT,
@tbname
是varchar(500)
而@id
也是INT。
这是我的疑问:
set @rc='select count(*) from dbo.[' + @tbname + '] where id = ' + @id
我也试过这些:
set @rc='select cast(count(*) as varchar) from dbo.[' + @tbname + '] where id = ' + @id
和
set @rc='select count(*) from dbo.[' + @tbname + '] where id = ' + cast(@id as varchar)
还有一些在这里和那里放置演员阵容的排列。我还尝试将@rc
的声明更改为varchar
,仍然会出现同样的错误。
答案 0 :(得分:1)
在这种情况下使用sp_executesql,
DECLARE @retval int
DECLARE @sSQL nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @rc INT
,@str NVARCHAR(MAX)
,@tbname NVARCHAR(500) = 'Table1'
,@id int
set @str='select @rcOut = count(*) from dbo.[' + @tbname + '] where id = ' + CAST(@id as NVARCHAR)
EXEC sp_executesql @str, N'@rcOut int OUTPUT',@rcOut = @rc OUTPUT;
SELECT @rc;