先看为空的情况
procedure test is
n number;
begin
select 1 into n from CUX_2_OM_RELEASE_LIMIT_V cov
where cov.Customer_Id=null;
end;
CUX_2_OM_RELEASE_LIMIT_V中没有id是空的,因此返回的结果一定是空集
运行结果:
有时候我们需要到空集才进行下一步操作,比如,用户存在时就修改数据,不存在就新增,那么如何解决?
当我们用max就可以解决,上面的语句就可以改为
procedure test is
n number;
begin
select max(1) into n from CUX_2_OM_RELEASE_LIMIT_V cov
where cov.Customer_Id=null;
end;
问题解决,但是又出现新的问题了,我用得到空集的n和null进行对比,,结果是不管怎么样都是永远执行else,真烦人,没有啥好的解决办法,我只能在max前加个nvl,问题解决,最终代码为:
procedure test is
n number;
begin
select nvl(max(1) ,2) into n from CUX_2_OM_RELEASE_LIMIT_V cov
where cov.Customer_Id=null;
end;
然后用1,2分别表示非空和空的情况
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44710155/article/details/122998965