2012-05-24 6 views
0

이것은 잘 작동하는 SQL 커서 조각입니다. 하지만 이제 여러 매개 변수를 @sql에 전달하려고합니다.SQL 커서 출력에 배수 매개 변수 전달

두 번째 코드 스 니펫의 주석을 참조하십시오. 나는 봤지만, 나는 이것에 대한 해답을 찾지 못하고있다.

set @sql = N' use TESTDOMAINDATABASE' + convert(nvarchar, @domainID) + @NewLineChar + 
      N' select @subDomain = (select subDomain from tblDomains (nolock))' 

execute sp_executesql @sql, N'@subDomain nvarchar(500) output', @subDomain output 

print 'subDomain is ' + @subDomain + ' and the domainID is ' + convert(nvarchar,@domainID) 

그러나이 전 tblDomains에서 다른 열을 원하는 가정 해 봅시다 (예를 들어 domainName).

위의 진술을 어떻게 업데이트합니까?

set @sql = N' use TESTDOMAINDATABASE' + convert(nvarchar, @domainID) + @NewLineChar + 
      N' select @subDomain = (select subDomain from tblDomains (nolock))' + @NewLineChar + 
      N'select @domainName = (select domainName from tblDomains(nolock))' 

execute sp_executesql @sql, N'@subDomain nvarchar(500) output', @subDomain output /* How do I pass multiple paramaters here ? */ 
execute sp_executesql @sql, N'@domainName nvarchar(500) output', @domainName output /*Adding a 2nd line does not do the trick - results in an error that I must declare the scalar variable @domainName */ 

print 'subDomain is ' + @subDomain + ' and the domainID is ' + convert(nvarchar,@domainID) + ' + and the domain name is ' @domainName' 

답변

2

이 뜻입니까? 각 데이터베이스의 tblDomains 테이블에 행이 하나만 있습니까?

set @sql = N' use TESTDOMAINDATABASE' + convert(nvarchar, @domainID) + @NewLineChar + 
      N' select @subDomain = subDomain, @domainName = domainName 
       from tblDomains (nolock);' 

execute sp_executesql @sql, 
    N'@subDomain nvarchar(500) output, @domainName nvarchar(500) output', 
    @subDomain output, @domainName output; 

print 'subDomain is ' + @subDomain + ' and the domainID is ' + convert(nvarchar,@domainID) 
+0

예, 각 데이터베이스의 tblDomains 테이블에는 단 하나의 행만 있습니다. 아주 좋아! 고마워, 애런 – Ray

+0

데이터를 중앙 집중적으로 저장하는 것이 좋습니다. 중앙 뷰 (DB_NAME()로 식별)에서 데이터베이스 행을 가져 오는 뷰를 각 데이터베이스에 작성할 수 있습니다. –

1

당신은 sp_executesql에 여러 쉼표로 구분 파라미터를 전달할 수있다.

DECLARE @sql nvarchar(MAX) 
DECLARE @x nvarchar(25) 
DECLARE @y nvarchar(25) 

SET @sql = N'SELECT @x = ''hello'', @y = ''world''' 

execute sp_executesql @sql, N'@x nvarchar(25) output, @y nvarchar(25) output' 
     ,@x output 
     ,@y output 

PRINT @x + ' ' + @y 
+0

감사합니다. @Rob Boek -이 문제를 해결해 드리겠습니다. – Ray