带有OR的Oracle CASE

6 oracle plsql

我们可以CASE使用OR如下语句:

CASE WHEN A > 0 OR B >0 THEN c=1 END;
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用AND,但是当我使用时会出错OR.你能建议一下吗?谢谢.

akf*_*akf 9

你试过把你的OR语句放在parens中吗?

 CASE WHEN (A > 0 OR B >0) THEN c=1 END;
Run Code Online (Sandbox Code Playgroud)


Rob*_*ijk 6

您发布了一个CASE表达式,但将其命名为CASE语句.这可能是混乱的来源.CASE表达式有效:

SQL> declare
  2    bool boolean;
  3    a    int := 1;
  4    b    int := 0;
  5    c    int := 1;
  6  begin
  7    bool := CASE WHEN A > 0 OR B >0 THEN c=1 END;
  8    if bool is null
  9    then
 10      dbms_output.put_line('NULL');
 11    elsif bool
 12    then
 13      dbms_output.put_line('TRUE');
 14    else
 15      dbms_output.put_line('FALSE');
 16    end if;
 17  end;
 18  /
TRUE

PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)

但您可能打算使用CASE语句,该语句以"END CASE"而不是"END"结尾.一个例子:

SQL> declare
  2    a    int := 1;
  3    b    int := 0;
  4    c    int;
  5  begin
  6    case
  7    when a > 0 or b > 0 then
  8      c := 1;
  9    end case
 10    ;
 11    dbms_output.put_line(c);
 12  end;
 13  /
1

PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)

问候,Rob.