2. 空值表达式与OR
程序段1:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF (my_name = ‘SCOTT’ OR other_name = ‘JOIN’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
程序段2:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF NOT (my_name = ‘JOIN’ OR other_name = ‘SCOTT’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
程序段3:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF (my_name = ‘JOIN’ OR other_name = ‘SCOTT’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
程序段1输出结果为CONDITION_TRUE,程序段2和3输出结果均为CONDITION_FALSE。
【注】如果带有OR操作符的判断条件包含至少一个等于TRUE的条件,则代码就会按照预期的路径执行。如程序段1。如果OR判断条件的所以部分都为空值,则整个表达式就为空值。在这种情况下,该语句既不为true也不为false,代码会沿着else路径执行。
程序段1:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF (my_name = ‘SCOTT’ OR other_name = ‘JOIN’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
程序段2:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF NOT (my_name = ‘JOIN’ OR other_name = ‘SCOTT’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
程序段3:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF (my_name = ‘JOIN’ OR other_name = ‘SCOTT’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
程序段1输出结果为CONDITION_TRUE,程序段2和3输出结果均为CONDITION_FALSE。
【注】如果带有OR操作符的判断条件包含至少一个等于TRUE的条件,则代码就会按照预期的路径执行。如程序段1。如果OR判断条件的所以部分都为空值,则整个表达式就为空值。在这种情况下,该语句既不为true也不为false,代码会沿着else路径执行。