no_data_found 时出现异常,我想将两个变量分配给 null

Posted

技术标签:

【中文标题】no_data_found 时出现异常,我想将两个变量分配给 null【英文标题】:Exception when no_data_found, i want to assign two variables to null 【发布时间】:2019-04-23 09:27:24 【问题描述】:

我已经编写了一个选择查询来获取两个列值,如果出现异常,我想在 ORACLE STORED PROCEDURE 中将这些变量分配给 null。

例如

select column A, column B into l_a, l_b 
  from ......
exception 
  when no_data_found then 
    l_a: = null and l_b := null ;

【问题讨论】:

究竟是什么阻碍了你朝着这个崇高的目标前进? 如果我这样写,那就报错了! pls-00103:在期望以下之一时遇到符号“=”: 这里是错字,我在oracle中写的正确 嗯。您所拥有的是语法错误。事实上,如果冒号和等号之间有一个恶意空格,就会出现这种语法错误。你说这不会出现在你的代码中?很好。无论哪种方式,如果您不发布您正在运行的实际代码(或至少是准确编辑的版本),我们都无法帮助您诊断您的代码。 如果你像上面写的那样,在一行l_a := null and l_b := null; 那么它会给出这个错误。在您的异常中写两行:l_a := null; 和第二行 l_b := null; 【参考方案1】:

有错别字。它必须是 := 而不是 : =。您还需要用分号分隔语句:;。通常语句在单独的行中。

l_a := null;
l_b := null;

除此之外,您不需要分配 null。变量最初分配为 null,如果未找到数据,则它们保持为 null。

当然,如果变量在值保留之前被分配了一个值。所以你也可以这样做。

l_a := null;
l_b := null;
select column A, column B into l_a, l_b 
  from ......
-- do something with l_a and l_b here
exception 
  when no_data_found then 
    null; -- ignore and do nothing

但通往罗马的道路总是多条路

【讨论】:

我认为您编写的第一行代码不会编译。这个:l_a := null and l_b := null ; 是的,你做到了。现在看起来好多了。

以上是关于no_data_found 时出现异常,我想将两个变量分配给 null的主要内容,如果未能解决你的问题,请参考以下文章

访问片段的子视图时出现空指针异常

Rjms & ActiveMQ:初始化记录器时出现异常

PL SQL 过程不引发异常 no_data_found

将 HTML5 视频标签分配给 webGL 纹理时出现 CORS/跨域安全异常

当我想将 localhost:4000 重定向到 localhost:3000 时出现错误 CORS

声明大数组时出现堆栈溢出异常