我想将SQL命令传递给变量并为其执行聚合函数。但是当我跑的时候 显示此错误,并且@cnt值
没有显示任何内容必须声明变量' @ cnt'
我的错误是什么?
DECLARE @ret varchar(300);
set @ret = '';
declare @cnt int;
set @ret = 'select @cnt = count(*) from TBL1'
EXEC (@ret)
print @cnt
答案 0 :(得分:1)
您可以使用sp_executesql访问动态SQL字符串中的变量:
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @cnt varchar(30);
SET @SQLString = N'SELECT @cntOUT = count(1) from tbl1';
SET @ParmDefinition = N'@cntOUT varchar(30) OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntOUT=@cnt OUTPUT;
SELECT @cnt;
答案 1 :(得分:0)
exec语句表示批处理结束,因此print语句不知道@cnt。
请改为尝试:
DECLARE @ret varchar(300)
set @ret = ''
set @ret = 'declare @cnt int
select @cnt = count(*) from [Load].RINData
print @cnt'
EXEC (@ret)