SQL Server Case语句

5

我试图运行这个SQL语句,但是它会生成错误信息"update 附近的语法不正确"。

Select Case @location 

        When 'MediaFiles' Then update tblMediaFiles set mdActive=1
        When 'MediaFiles1' Then update tblMediaFiles1 set mdActive=1
        When 'MediaFiles2' Then update tblMediaFiles2 set mdActive=2
        Else update tblMediaFiles4 set mdActive=1

    End
2个回答

8

SQL有一个CASE 表达式,它可以放在表达式的位置上。

使用IF 语句代替。

IF @location = 'MediaFiles' 
    update tblMediaFiles set mdActive=1
ELSE IF @location = 'MediaFiles1' 
    update tblMediaFiles1 set mdActive=1
ELSE IF @location = 'MediaFiles2' 
    update tblMediaFiles2 set mdActive=2
ELSE
    update tblMediaFiles4 set mdActive=1

6

来自MSDN:

CASE表达式不能用于控制Transact-SQL语句、语句块、用户定义函数和存储过程的执行流程。有关流程控制方法的列表,请参见Control-of-Flow Language (Transact-SQL)

你真的想要使用IF-ELSE结构来实现这种逻辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接