ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常

例子:

sql 复制代码
DECLARE ORDER_NUM VARCHAR2(20);
BEGIN
SELECT S.ORDER_NUM INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID=122344;
DBMS_OUTPUT.PUT_LINE('单号:' || ORDER_NUM);
END;

在查询结果为空的情况下,以上代码会报错:未找到任何数据

解决方法:

改为 SELECT MAX(S.ORDER_NUM) INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID=122344;

SELECT S.ORDER_NUM 查不到数据情况下,一条结果也没有;但 SELECT MAX(S.ORDER_NUM) 不管是否查到数据,都会有一条结果。这是这条结果赋值给了变量,这才不会报错。

相关推荐
xixixi777776 小时前
互联网和数据分析中的核心指标 DAU (日活跃用户数)
大数据·网络·数据库·数据·dau·mau·留存率
范纹杉想快点毕业7 小时前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc
这周也會开心7 小时前
Redis与MySQL回写中的数据类型存储设计
数据库·redis·mysql
Aaron_Wjf7 小时前
PG Vector测试
数据库·postgresql
Aaron_Wjf8 小时前
PG逻辑复制槽应用
数据库·postgresql
一碗面4218 小时前
SQL性能优化:让数据库飞起来
数据库·sql·性能优化
June bug8 小时前
【高频SQL基础版】排序和分组
数据库·sql
珠海西格8 小时前
光伏电站全景感知体系:数据采集与设备状态监测技术
大数据·运维·服务器·数据库·人工智能
爱基百客8 小时前
从人鼠到植物:SEdb 3.0数据库一站式检索与分析超级增强子调控网络
数据库·国自然·转录因子·组蛋白修饰·增强子
来来走走8 小时前
rocky linux 9.7安装mysql 8.4+
linux·数据库·mysql