2014-11-11 2 views
0

SQL 명령을 변수에 전달하고 그에 대한 집계 함수를 실행하려고합니다. 나는 그것을 실행할 때, 이 오류는은 출력 변수가있는 TSQL 명령을 실행합니다.

변수 '@cnt'

내 실수가 무엇을 선언해야합니다, 표시, 아무것도 @cnt 값에 대해 표시되지 않습니다?

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

답변

1

당신은 동적 SQL 문자열의 내부 변수에 액세스 sp_executesql을 사용할 수 :

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, @[email protected] OUTPUT; 
SELECT @cnt; 
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) 
관련 문제