1

연결된 서버에 작업 번호가 존재하는지 확인하고 시도 여부를 나타내는 변수 (@JobExists)를 얻으려고합니다 (예를 들면 1, 아니오는 0).sp_executesql에서 OPENQUERY를 어떻게 사용합니까?

이렇게하려면 작업 번호에 대한 매개 변수를 전달해야하므로 sp_executesql과 함께 OPENQUERY를 사용하려고합니다. 아래 코드를 시도했지만 ''ntext/nchar/nvarchar '형식의'Procedure expects parameter '@statement'오류가 발생합니다. 테스트 목적으로 @JobNumber 변수를 선언하고 설정했습니다. http://technet.microsoft.com/en-us/library/ms188001.aspx 나는 또한 수행 한 다양한 검색을하지만 나를 위해 작동 어떤 답변 건너되지 않은 :

DECLARE @JobNumber as varchar(50) 
SET @JobNumber = '2112111' 

DECLARE @JobExists as BIT 
DECLARE @JobCount as int 
DECLARE @ParmDefinition as varchar(100) 
DECLARE @sql as varchar(500) 

SET @JobExists = 0 
SET @ParmDefinition = N'@Result int output' 
SET @sql = 'SELECT @Result = SELECT COUNT(*) FROM OPENQUERY(MYLINKEDSVR,''SELECT JOB_NUMBER FROM PROD.tbl1 WHERE JOB_NUMBER = ''''' + UPPER(RTRIM(LTRIM(@JobNumber))) + ''''''')' 

exec sp_executesql @sql, @ParmDefinition, @Result = @JobCount output 

IF @JobCount > 0 
SET @JobExists = 1 

SELECT @JobExists 

나는 sp_executesql을 여기까지 읽었습니다.

내가 누락 된 자료가 있습니까?

답변

1

오류 메시지가 분명합니다. @ sql을 varchar가 아닌 nvarchar로 선언해야합니다. @ParamDefinition에 동일하게 적용됩니다.

DECLARE @ParmDefinition as nvarchar(100) 
DECLARE @sql as nvarchar(500) 
+0

감사 정보. 내가 그리워하는 바보 같은 짓. 나는 어딘가에 있지만 지금 오류가 발생하고 있다고 생각합니다 : 키워드 'SELECT'근처의 구문이 올바르지 않습니다. (1 행 적용) – sr28

+0

SELECT @Result = COUNT (*) –

+0

감사합니다. 또 다른 간단한 실수. 사과, 또 커피를 만들거야! – sr28