当前位置: 首页 > article >正文

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

 


http://www.kler.cn/news/350652.html

相关文章:

  • 基于neo4j的新冠治疗和新冠患者轨迹的知识图谱问答系统
  • uv: 一个统一的Python包管理工具
  • 混个1024勋章
  • Notepad++通过自定义语言实现日志按照不同级别高亮
  • Lucas带你手撕机器学习——决策树
  • 指针大小为什么是4字节(32位机器)
  • 洛谷 P1106:删数问题 ← 贪心算法
  • 常见的微控制器(ESP8266、ESP32,、51单片机、stm32)区别
  • 自感式压力传感器结构设计
  • 私有聊天平台的数据管理策略与分析实践
  • 什么是 SQL 注入
  • 深入剖析 Java Spring 中的 @Autowired、@Resource、@Qualifier、@Inject 注解:使用详解与注意事项
  • Vue的响应式原理
  • Linux查看处理器信息
  • Adobe Illustrator如何在图片插入latex公式
  • VS code连接远程服务器
  • webGL进阶(三)-动态变换与动画理论基础
  • Android——通过MediaStore查询图片
  • 【目标检测---旋转框标注】roLabelImg安装与使用
  • 多线程中的 CAS
  • 腾讯云视立方Electron 相关问题
  • x86架构与arm架构
  • 详解java8的新特性
  • 【Next.js 项目实战系列】05-删除 Issue
  • Python--plt.errorbar学习笔记
  • 视频网站后端架构:Spring Boot的创新应用