2012-05-28 4 views
12
DECLARE @query as varchar(200); 
SET @query = 'SELECT COUNT(*) FROM table'; 

@query을 어떻게 실행할 수 있습니까? 또한 변수를 할당 할 때 쿼리 결과를 직접 저장할 수있는 방법이 있습니까? 이런 식으로, 바람직하게는,TSQL - 쿼리를 변수로 실행하는 방법?

exec (@query) 

또는 :

답변

23

output 매개 변수와 함께 sp_executesql을 사용하여 스칼라 결과를 검색 할 수 있습니다.

DECLARE @query as nvarchar(200), @count int; 
SET @query = N'SELECT @count = COUNT(*) FROM table'; 

EXEC sp_executesql @query, 
        N'@count int OUTPUT', 
        @count = @count OUTPUT 

SELECT @count AS [@count] 
+0

코드가 유용하다는 것을 이해했는지, 잘 모르겠지만 쿼리 결과를 OUTPUT에 의해 개수 변수로 asign합니까? – Malyo

+1

@Malyo - 외부 범위에 변수 @count를 선언합니다. 이것은'sp_executesql' 호출에서 출력 매개 변수로 전달됩니다. 즉, 출력 매개 변수에 대한 할당이 해당 변수에 전달됨을 의미합니다. 'OUTPUT' 매개 변수에 대한 더 자세한 정보는 [TSQL Basics II - Parameter Passing Semantics] (http://blogs.msdn.com/b/sqlprogrammability/archive/2006/06/09/624531.aspx)를보십시오. –

9

이 같은 그것을 할 수

execute sp_executesql @query 

더 많은 정보 this MSDN article을 확인합니다.

관련 문제