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) 不管是否查到数据,都会有一条结果。这是这条结果赋值给了变量,这才不会报错。

相关推荐
wgzrmlrm7412 分钟前
如何解决ORA-28040没有匹配的验证协议_sqlnet.ora版本兼容设置
jvm·数据库·python
一江寒逸12 分钟前
零基础从入门到精通MySQL(附加篇):面试八股文全集
数据库·mysql·面试
数厘18 分钟前
2.6MySQL库表操作指南(电商数据分析专用)
数据库·mysql·数据分析
需要点灵感19 分钟前
SQL Server 存储过程语法整理
数据库·sql
刘~浪地球21 分钟前
数据库与缓存--分库分表实战指南
网络·数据库·缓存
Mr_Xuhhh26 分钟前
深入Java多线程进阶:从锁策略到并发工具全解析
前端·数据库·python
数厘32 分钟前
2.5可视化工具与 MySQL 连接配置及基础操作
数据库·mysql
沃尔威武1 小时前
性能调优实战:从火焰图定位到SQL优化的全流程
android·数据库·sql
数厘1 小时前
2.7SQL 四大分类:理解与避坑
数据库·sql
亮子AI1 小时前
【PostgreSQL】推荐几个PostgreSQL管理工具
数据库·postgresql