oracle存储过程学习笔记(二)

1空值表达式与AND
程序段1:
set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10):=NULL;
BEGIN
IF (my_name = ‘SCOTT’ and 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 = ‘SCOTT’ and other_name = ‘JOIN’) THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;


这两个程序段执行结果均为:CONDITION_FALSE
因为other_name为NULL,将它与and操作符结合时,得不到任何有意义的结果,也就是得到的结果既不是true也不是false,当if判断式存在这种情况时,执行的都是else部分。

【注】如果判断式是一个值为NULL的变量与一个AND操作符相结合而成的,就得不到期望的结果。值为NULL的变量是没有值的。因此,无法将它与任何值进行比较,也就无法得到任何有意义的结果。与NULL变量相比较的表达式得到的是空值。如果这样一个表达式存在于含有ELSE部分的IF语句中,由于代码不等于TRUE,所以就会沿着ELSE路径执行。但是代码也不等于FALSE,所以即使将IF逻辑取反,结果同样是执行ELSE部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值