DECLARE CURSOR中的CASE语句

时间:2014-08-29 19:43:07

标签: sql-server tsql select 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

我知道这是错误的语法,但我希望你能推断出我的意思,并解释一个人应该怎么做。

1 个答案:

答案 0 :(得分: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