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

相关推荐
_oP_i15 分钟前
SQLBot 系统数据库字段
数据库
我真会写代码17 分钟前
Redis高频面试题(含标准答案,覆盖基础+进阶+实战)
数据库·redis·缓存
2301_7938046919 分钟前
用Python和Twilio构建短信通知系统
jvm·数据库·python
小李来了!32 分钟前
数据库DDL、DML、DQL、DCL详解
数据库·mysql
6+h38 分钟前
【Redis】缓存问题及解决方案
数据库·redis·缓存
always_TT1 小时前
字符串输入:gets vs fgets(安全问题)
数据库·安全
我科绝伦(Huanhuan Zhou)1 小时前
【生产案例】MySQL InnoDB 数据损坏崩溃修复
数据库·mysql·adb
猹叉叉(学习版)1 小时前
【系统分析师_知识点整理】 3.数据库系统
数据库·笔记·软考·系统分析师
6+h2 小时前
【Redis】高可用核心讲解
数据库·redis·缓存