Sql server 声明游标中的CASE语句
我想声明一个游标,它根据作为参数传递给存储过程的开关来查看不同的表 也就是说,类似于以下内容:Sql server 声明游标中的CASE语句,sql-server,tsql,select,cursor,case,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 我知道这
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
我知道这是错误的语法,但我希望您能推断出我的意思,并解释应该如何做这类事情。您可以使用游标变量,如下所示:
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
该过程的其余部分是否需要处理它在其中启动的任何数据库?