2013-05-29 1 views
1

나는이다른 환경

DECLARE @DateRateizzazionePerSA nvarchar(2000) 
DECLARE @query nvarchar(3000) 

SET @query = 'SELECT @DateRateizzazionePerSA = COALESCE(@DateRateizzazionePerSA+ '', '', '''') + a.RataStr FROM (SELECT DISTINCT RataStr =' 
      +' . . . ' 

EXEC(@query) 

같은 SQL 일괄 처리 스크립트를 준비하고있어하지만 내가를 얻을 수 있기 때문에이 단계는 보이지 않는EXEC에 명령입니다 오류 :

Must declare the scalar variable "@DateRateizzazionePerSA".

어떻게해야합니까? EXEC 환경이 외부 환경을 알지 못하는 것 같습니다. Isnt'it?

+0

([SQL에서 EXEC 실행시 캐릭터의 변수 값을 이용하여]의 중복 가능성 http://stackoverflow.com/questions/11052749/using-variable-value-in-string-when-executing-exec- in-sql) – Pondlife

답변

1

sp_executeSQL은 범위간에 데이터를 공유하는 데 사용할 수 있습니다.

DECLARE @DateRateizzazionePerSA nvarchar(2000) = 'Foo' 
DECLARE @query nvarchar(3000) 

SET @query = 'SELECT @DateRateizzazionePerSA += ''Bar''' 

EXEC sp_executeSQL @query, 
    N'@DateRateizzazionePerSA nvarchar(2000) OUTPUT', 
    @DateRateizzazionePerSA OUTPUT 

SELECT @DateRateizzazionePerSA 

== 'FooBar' 
0

변수를 쿼리에 전달하려면 텍스트 문자열을 벗어나야합니다. 'SELECT'+ @ DateRateizzazionePerSA +

DECLARE @DateRateizzazionePerSA nvarchar(2000) 
DECLARE @query nvarchar(3000) 

SET @query = 'SELECT '[email protected]+ '= COALESCE('[email protected]zazionePerSA+ '+ '', '', '''') + a.RataStr FROM (SELECT DISTINCT RataStr =' 
      +' . . . ' 

EXEC(@query) 

가되었을 때 문자열이 단지 내부에 새로운 변수가 등장 실행될 오히려, 변수가 평가되지 않았습니다.

동적 SQL 문제를 해결하는 데 도움이되는 한 가지 방법은 EXEC (@query)를 PRINT (@query)로 변경하는 것입니다.이 방법을 사용하면 쿼리 변수가 어떻게 실행되는지 확인할 수 있습니다.

+0

해당 변수를 평가할 필요가 없습니다. 평가 과정은 @query 설정 옆에 있습니다. –

+0

아, 문제를 오해했습니다. –

관련 문제