SQL 服务器 - 根据 IF 条件更新

SQL Server - Update on IF condition

我不敢相信我无法在其他帖子中找到解决方案,但这里是..

我正在尝试根据设置的变量更新不同的表,我希望结构是这样的:

IF @etape = 1
(UPDATE table1 SET column1 = 1)
IF @etape = 2
(UPDATE table2 SET column1 = 1)
ELSE
(SELECT 'Wrong choice')

哪个returns:

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 语句。 在此感谢您的帮助。

在根据参数更新 table 的情况下,您应该使用 SQL 存储过程,它允许您将值作为参数传递,如下所示。

create procedure spUpdateTable
@etape int
as begin
if @etape = 1
    begin
        UPDATE table1 SET column1 = 1
    end
else if @etape = 2
    begin
        UPDATE table2 SET column1 = 1
    end
else
    begin
        print 'Wrong Choice'
    end
end

现在运行您的程序只需使用如下

spUpdateTable 1 or 2

只需删除括号...

Declare @etape int = 1
IF @etape = 1 UPDATE table1 SET column1 = 1
IF @etape = 2 UPDATE table2 SET column1 = 1
ELSE SELECT 'Wrong choice' 

,或将您的更新包装在 BEGIN...END 块中。

虽然我看到另一个答案已经修复了你的 if 语法,你是否考虑过只使用 where 子句?

UPDATE table1 SET column1 = 1 WHERE @etape = 1;
UPDATE table2 SET column1 = 1 WHERE @etape = 2;
IF @etape <> 2
 SELECT 'Wrong choice'