2012-04-05 3 views
2

SQL 쿼리에 문제가 있습니다. EXEC을 사용하여 SQL 문을 실행해야하며 열 중 하나가 이미 변수로 표시되어 있으므로 해당 열의 값을 다른 변수와 함께 놓아야합니다. 이것이 성취 될 수 있습니까? 그렇다면 다른 솔루션을 제안 해주십시오.EXEC Select 문 동적 열을 사용하여 값을 변수에 저장합니다.

Google을 통해이 스 니펫을 발견했습니다. 그러나 이것조차도 나에게 원하는 출력을주지 못한다.

내 SQL 문 :

declare @i int, @j int =10 
exec sp_executesql N'select @i ='+ @j, N'@i int output', @i output 
select @i 

답변

3

이 2005 내 SQL 서버에서 작동 ..

declare @i int, @j int 
    set @j =10 
    declare @sql nvarchar(max) 
    set @sql = 'select @i =' + str(@j) 
    exec sp_executesql @sql, N'@i int output', @i output 
    select @i 
+0

작동 thnx 내가 그 차이점은 무엇입니까 알 수 있습니까? 오 .. 캐스팅 문제 이외의 .. – itb564

+0

캐스팅을하면 선언시 변수를 초기화 할 수 없으며 sp_execute_sql은 expression을 매개 변수로 사용하지 않습니다. 이 경우 변수 @sql을 보내야합니다. –

+0

SQL Server 2008 이상에서는 선언에서 변수를 초기화 할 수 있습니다. – RBarryYoung