欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Oracle中解决select into值集为空的报错情况

Oracle中解决select into值集为空的报错情况

2024/10/24 5:19:18 来源:https://blog.csdn.net/ok060/article/details/142963098  浏览:    关键词:Oracle中解决select into值集为空的报错情况

先看为空的情况

   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

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com