在Update中使用IF语句的PL / SQL

时间:2016-01-07 01:21:26

标签: plsql sql-update cursor

想知道是否有这样的事情:

begin
    for C2 in cursor_sal loop
        if something then
            update emp
            set name = George
            where ID = 1
        elsif something2 then
            update emp
            set name = Steve
            where ID = 4
        end if
    end loop;
end;

可以变成这样或类似的东西:

begin
    for C2 in cursor_sal loop
        update emp
        if something then
            set name = George
        elsif something2 then
            set name = Steve
        end if
        where current of C2
    end loop;
end;

或者这是不可能的,我坚持第一个例子?

2 个答案:

答案 0 :(得分:3)

我知道这样做的最好方法是使用case语句,如下例所示。代码未经测试,但应足以让您继续。

begin
    for C2 in cursor_sal loop
        update emp
        set name = case
                     when something     then 'George'
                     when somethingelse then 'something2'
                     else 'somthing 3'
                   end
        where current of C2
    end loop;
end;

答案 1 :(得分:0)

您可以在更新语句中使用case语句,如下所示

update emp
  set name = case when something then 'George'
                  when something2 then 'Steve'
             end;

如果条件相同,您也可以使用解码功能。

update是sql语句,if语句是pl / sql构造。您可以在pl / sql中使用sql语句,但不能在sql中使用pl / sql构造。