2009-06-08 3 views
1

SQL Server SP에서 동적으로 이름으로 지정된 로컬 변수의 값을 가져 오는 방법이 있습니까? 그것은 포함하는 범위의 지역 변수에 액세스 할 수 없기 때문에SQL Server SP에서 동적으로 변수 값 가져 오기

declare @foo int 
declare @bar int 

declare @variable_name varchar(10) 
set @variable_name = '@foo' 

print -- magic happens here - how to print the value of the variable 
     -- which name is stored in @variable_name, in this case @foo 

평가은 도움이되지 않습니다.

주로 디버깅/진단 목적으로 사용하고 있습니다.

답변

0

AFAIK, 아니는 : SQL Server에서이 일을 더 직접 방법은 없습니다. 이 실생활에서 유지하는 것은 매우 어려울 것이다 물론

declare @foo int 
declare @bar int 

declare @variable_name varchar(10) 
set @variable_name = '@foo' 
set @foo = 1; 
set @bar = 2; 

declare @sql nvarchar(max); 
set @sql = N'SELECT ' + @variable_name; 
exec sp_executesql @sql, N'@foo int, @bar int', @foo, @bar 

가에서 sp_executesql에 대한 호출이 항상 최신 상태로 유지되어야 할 것이다 :

0
declare @foo int 
declare @bar int 

select @foo=1, @bar=2 

declare @variable_name varchar(10) 
set @variable_name = '@foo' 

if @variable_name = '@foo' 
    print @foo 
else if @variable_name = '@bar' 
    print @bar 
+0

이렇게하면 두 가지 정적 선택이 제한됩니다. 일반 솔루션에 관심이 있습니다. – hvintus

3

은 기술적으로이에서 sp_executesql 모든 지역 변수를 전달하여 가능하다 현재 프레임의 로컬 변수 (일괄 처리 또는 프로 시저 호출). 이것이 다소 '일반'이지만, 모든 로컬 변수 이름과 함께 큰 사례를 사용하는 것보다 낫지 않습니다.

+0

감사합니다. – uowzd01

관련 문제