If statement 如果具有ORs条件,则不按预期PL/SQL运行
您好,我有一个简单的示例代码没有像我在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
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)
以获得相同的结果