首页 > 解决方案 > Oracle 11 PL/SQL:检查变量是否为空、空字符串和无结果

问题描述

使用 PL/SQL,我执行一个 SELECT INTO 语句,基于我想要执行相同逻辑的结果。我想检查:

在我当前的解决方案中,我对案例 1 使用 NO_DATA_FOUND 异常,对案例 2+3 使用 IF 检查,但以任何一种方式调用相同的逻辑,我不喜欢:

     BEGIN
        SELECT some_value
          INTO my_variable
          FROM some_table
         WHERE somecheck = 123

        IF my_variable IS NULL OR my_variable = ''
        THEN
            ##perform logic##
        END IF;
     EXCEPTION
        WHEN NO_DATA_FOUND
        THEN
            ##perform same logic as above##
     END;

这是否可以更好地解决,以防止我必须为我的 IF 检查和我的异常复制粘贴相同的代码?

特别是,扩展我的 IF 检查是否安全

IF SQL%ROWCOUNT = 0 THEN ...

而不是使用 NO_DATA_FOUND 异常来实现我的目标?

标签: oracleplsqloracle11g

解决方案


如果您聚合some_value,那么您将不会得到NO_DATA_FOUND,因此您可以省略该异常处理程序。NULL''是相同的,所以代码可以缩短为

select max(some_value) into my_variable ...

if my_variable is null then 
   ##perform logic##
end if;

推荐阅读