2013-10-08 1 views
1

내가 이런 동적 SQL을 작성할 때?SQL Server 동적 SQL 값을 얻을 수 없습니다

set @dynamicSQL='select '[email protected]+'= name from '[email protected]+'.sys.sysfiles where groupid=0' 

이 작동하지 않을 수 있습니다,하지만 난 이렇게 쓸 때 :

set @dynamicSQL='select name from '[email protected]+'.sys.sysfiles where groupid=0' 

그것은 작동 할 수 평범한 것인지 이유 :

select @logName=name from sys.sysfiles where groupid=0;   

이 제대로 작동 할 수 있습니다 같은 ? 누군가가 말해 준다면 나는 승인 할 것이다.

+1

무엇이 @logName에 전달되는 값 –

+0

문이 실행될 때 스크립트가 실행되는 쉘과는 별도의 자체 쉘에서 실행됩니다. 테이블에 저장된 데이터가 포함되어 있지 않으면 (즉, 한 쉘이 다른 쉘에서 데이터를 테이블로 씁니다.) 첫 번째 쿼리는 하위 쉘에서 정보를 다시 검색하려고하지만 이 하위 쉘의 출력을 다시 검색 할 수 없기 때문에 불가능합니다. 그게 도움이 되니? –

+0

단순히 동적 쿼리에서 변수를 가져 오는 경우이 스레드가 도움이 될 수 있습니다. http://stackoverflow.com/questions/3840730/getting-result-of-dynamic-sql-into-a-variable –

답변

2

이 솔루션은 다음과 같이이다 :

set @dynamicSQL=N'select @logName= name from '[email protected]+'.sys.database_files where type_desc=''LOG''' 

exec sp_executesql @dynamicSQL,N'@logName nvarchar(100) output',@logName output 

그런 다음 우리는 동적 문에서 name를 얻을 수 있습니다.