【发布时间】:2020-12-04 16:12:03
【问题描述】:
我不敢相信我无法在其他帖子中找到解决方案,但是这里是……
我正在尝试根据一组变量更新不同的表,我希望结构是这样的:
IF @etape = 1
(UPDATE table1 SET column1 = 1)
IF @etape = 2
(UPDATE table2 SET column1 = 1)
ELSE
(SELECT 'Wrong choice')
返回:
Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'update'.
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ')'.
我尝试过使用 CASE,结果相同:
CASE WHEN @etape = 1 THEN
(UPDATE table1 SET column1 = 1)
WHEN @etape = 2 THEN
(UPDATE table2 SET column1 = 1)
ELSE
(SELECT 'Wrong choice')
END
虽然文档没有提到这一点,但似乎在 IF 或 CASE 之后只允许使用 SELECT 语句。
希望能得到一些帮助。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。大多数数据库不允许单个
update修改多个表。 -
@GordonLinoff 我没有足够的声誉来标记 T-SQL
-
CASE是一个 表达式(正如您使用的标签 case 告诉您的那样),它返回一个标量值。 T-SQL 不支持Case(Switch) 语句。 -
您的
IF语句有什么问题..? -
尽量不要将语句放在括号内。
标签: sql sql-server if-statement case