2014-08-29 4 views
0

저장 프로 시저에 매개 변수로 전달 된 스위치에 따라 다른 테이블을 보는 커서를 선언하고 싶습니다. 이다DECLARE CURSOR의 CASE 문

, 다음과 같은 :

DECLARE curs CURSOR FOR 
    CASE 
    WHEN @sname = 'A_database' 
    THEN select a,b,c from [a].dbo.[mytable]; 
    WHEN @sname = 'B_database' 
    THEN select a,b,c from [b].dbo.[mytable]; 
    END 

나는이 잘못된 구문을 알고,하지만 난 당신이 내 의미를 추론과 하나가 이런 종류의 작업을 수행하는 방법을 설명 할 수 있기를 바랍니다. 다음과 같이

+0

절차의 나머지가 시작됩니다 어떤 데이터베이스 해결해야합니까? –

+0

그냥 동적 SQL 수행 – mxix

답변

2

당신은 커서 변수를 사용할 수 있습니다

DECLARE @curs CURSOR 

IF @sname = 'A_database' 
    SET @curs = CURSOR FOR 
        select a,b,c from [a].dbo.[mytable]; 
ELSE IF @sname = 'B_database' 
    SET @curs = CURSOR FOR 
        select a,b,c from [b].dbo.[mytable]; 

OPEN @curs 

... etc