If statement 如果具有ORs条件,则不按预期PL/SQL运行

If statement 如果具有ORs条件,则不按预期PL/SQL运行,if-statement,plsql,conditional-statements,If Statement,Plsql,Conditional Statements,您好,我有一个简单的示例代码没有像我在PL/SQL中预期的那样运行: declare A NUMBER := NULL; B NUMBER := NULL; C NUMBER := NULL; D NUMBER := NULL; E NUMBER := 7; BEGIN IF A != NULL OR B != NULL OR C != NULL OR D != NULL OR E != NULL THEN DBMS_OUTPUT.PUT_LINE('IF'); ELSE DBM

您好,我有一个简单的示例代码没有像我在PL/SQL中预期的那样运行:

declare 

A NUMBER := NULL;
B NUMBER := NULL;
C NUMBER := NULL;
D NUMBER := NULL;
E NUMBER := 7;

BEGIN

IF A != NULL OR B != NULL OR C != NULL OR D != NULL OR E != NULL THEN

DBMS_OUTPUT.PUT_LINE('IF');

ELSE 

DBMS_OUTPUT.PUT_LINE('ELSE');

END IF;

END;


据我所知,当多个OR作为条件时,只要其中一个为真,条件对所有OR也是真的。在这种情况下,E是7,所以E是!=到7,所以我认为它应该输入IF,但在输出中“ELSE”出现。

您的
!=空
条件是问题,因为没有任何条件等于或不等于空。将其替换为
不为空
,并按预期工作:

declare
    a number := null;
    b number := null;
    c number := null;
    d number := null;
    e number := 7;
begin
    if a is not null or b is not null or c is not null or d is not null or e is not null then
        dbms_output.put_line('IF');
    else
        dbms_output.put_line('ELSE');
    end if;
end;

或者,您可以测试
合并(a、b、c、d、e)
以获得相同的结果。

您的
!=空
条件是问题,因为没有任何条件等于或不等于空。将其替换为
不为空
,并按预期工作:

declare
    a number := null;
    b number := null;
    c number := null;
    d number := null;
    e number := 7;
begin
    if a is not null or b is not null or c is not null or d is not null or e is not null then
        dbms_output.put_line('IF');
    else
        dbms_output.put_line('ELSE');
    end if;
end;
或者,您可以测试
合并(a、b、c、d、e)
以获得相同的结果