给定以下 Oracle 函数:
create or replace FUNCTION nullFunction(a NUMBER) RETURN NUMBER IS
varX NUMBER;
BEGIN
select 1 into varX from dual where exists(select 1 from dual where a = 1);
IF (varX = 1) THEN RETURN 1;
ELSE RETURN 0;
END IF;
END;
然后,我从 Oracle SQL Developer 的工作表中调用它:
select nullFunction(3) from dual
回报(null)
。
接下来,我将函数修改为:
create or replace FUNCTION nullFunction(a NUMBER) RETURN NUMBER IS
varX NUMBER;
BEGIN
select 1 into varX from dual where exists(select 1 from dual where a = 1);
IF (varX is NULL) THEN RETURN 0;
ELSE RETURN 1;
END IF;
END;
3
但是,当我用-的值调用它时,我收到了相同的输出null
。
为什么它返回NULL
?作为. 0
_ varX
_ null
_else
如果您传递除数字 1 以外的任何数字,则您的选择不返回任何数据并引发 no_data_found 异常。不确定你想做什么,但一个简单的解决方案是添加一个例外。
或者重组 select from dual,使其无法返回 no_data_found。