如何在更新语句中使用 if 条件

问题描述

我需要在更新查询中使用 if 条件,请检查并让我知道下面的更新语句 会正常工作吗??

if opt=1 then
update EOD SET  flag='Y' where Step_name='STEP_1'
else if
ip opt=2 then
update EOD SET  flag='Y' where Step_name='STEP_2'
end if;

'''

解决方法

你可以用 where 子句做到这一点。

update EOD SET  flag='Y' where (Step_name=STEP_1 and opt=1) or(Step_name=STEP_2 and opt=2);

要按照您的意图在 PL/SQL 中执行此操作而不是 else if,您需要使用 elseif

if opt=1 then
update EOD SET  flag='Y' where Step_name=STEP_1;

elseif opt=2 then
update EOD SET  flag='Y' where Step_name=STEP_2;
end if;
,
CREATE
    OR REPLACE PROCEDURE archana (opt IN NUMBER) IS
BEGIN
    IF opt = 1 THEN
        UPDATE EOD SET FLAG = 'Y' WHERE STEP_NAME = 'STEP_1';
    ELSIF opt = 2 THEN
        UPDATE EOD SET FLAG = 'Y' WHERE STEP_NAME = 'STEP_2';
    ELSE
        dbms_output.put_line('ERROR');
    END IF;
END;

opt 被接受为输入参数,然后根据值执行相应的更新查询。 P.S:在本论坛发帖之前请先测试您的代码,而不是询问它是否有效。如果它不起作用,那么很多人都会在这里提供帮助。