使用输出变量执行TSQL命令

时间:2014-11-11 23:20:34

标签: tsql variables exec

我想将SQL命令传递给变量并为其执行聚合函数。但是当我跑的时候 显示此错误,并且@cnt值

没有显示任何内容

必须声明变量' @ cnt'

我的错误是什么?

DECLARE @ret varchar(300);
set @ret = '';
declare @cnt int;
set @ret = 'select @cnt = count(*) from TBL1'
EXEC (@ret)
print @cnt

2 个答案:

答案 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)