2014-08-29 53 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

程序是否其餘需要解決它開始在任何數據庫? – 2014-08-29 20:42:27

+0

只是做動態sql – mxix 2014-08-29 21:10:57

回答

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