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'
我不敢相信我无法在其他帖子中找到解决方案,但这里是..
我正在尝试根据设置的变量更新不同的表,我希望结构是这样的:
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'