oracle的NULL值现象

最近,写oracle存储过程,和sql的不一样啊,sql 中select 就可以返回结果集,而oracle呢,得用指针(游标),写惯了sql语句,有点不适应.昨天,写好测试一存储过程,存储过程在开始时会对某个参数的长度进行判断

 

ContractedBlock.gif ExpandedBlockStart.gif Code
declare
test 
varchar2(20) :='';
begin
if length(test)=0 then
  语句一
else
  语句二
end if;
end;

当test赋值''时,在sql中LEN(@test)=0,而在oracle中这个条件总是走到语句二,难道oracle中,length(test)不为0?只好测试看看了

 

ContractedBlock.gif ExpandedBlockStart.gif Code
declare
test 
varchar2(20) :='';
begin
dbms_output.put_line(
's'||length(test)||'s');
dbms_output.put_line(
's'||nvl(test,0)||'s');
end;

/*
运行结果:
ss
s0s
*/

 

结论:

根据测试,在oracle中,将参数赋值'' 与 null 全部视为 null,因为对oracle是刚接触,可能有的地方得出的结论不正确,请大家指点啊.

 

转载于:https://www.cnblogs.com/kevinlzf/archive/2008/12/24/1361090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值