oracle - pl/sql - 空行是否有 NVL()

标签 oracle plsql

有了这个,

set serveroutput on size 900000;
DECLARE
  test VARCHAR(255):=0;
BEGIN
    SELECT id INTO test FROM sku WHERE id = 1515;
    dbms_output.put_line('Result:' || test);
END;

我有错误
"no data found"

当数据库中不存在 ID 时。

我如何使用类似 nvl() 的东西在这里,我可以得到一个默认值而不是得到一个错误?

最佳答案

适当的,您可以将其作为更常见的 NO_DATA_FOUND 异常处理的替代方法:

DECLARE
  test VARCHAR(255):=0;
BEGIN
    SELECT NVL(MAX(id),'default') INTO test FROM sku WHERE id = 1515;
    dbms_output.put_line('Result:' || test);
END;

通过使用 MAX(ID) 你肯定会得到一行,当没有数据时它会有一个 NULL;然后您以通常的方式使用 NVL。

关于oracle - pl/sql - 空行是否有 NVL(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891829/

相关文章:

oracle - 哪个命令引发了异常?

sql - 从两个表更新时使用case when语句

java - Oracle插入或更新或抛出异常

oracle - 从 Oracle 数据库中的 sql Developer 生成 sql 跟踪文件

sql - 如何在 ORACLE Data Modeler 上创建继承

oracle - 从 Oracle 并发程序运行 UNIX shell 脚本时出现问题

sql - oracle多条件动态sql

sql - 无法更改密码

sql - 从年、月和日创建日期

oracle - 如何杀死用户的所有事件和非事件 oracle session