我有一个关于Oracle中PL/SQL函数默认值的简短问题。以这个程序为例,Oracle默认值
create or replace
FUNCTION testFunction
(
varNumber IN NUMBER DEFAULT 0
)
RETURN NUMBER
AS
BEGIN
dbms_output.put_line(varNumber);
RETURN varNumber;
END;
这里是如果对varNumber没有指定值时,该函数被调用的想法,那么它就会采取0
现在的价值,我的问题是,我的功能都可以从所谓的一个Web服务层,它将始终作为参数的值传入NULL,而参数的值没有值。 Oracle将NULL解释为一个值,因此不会将varNumber初始化为其默认值0.
我可以看出为什么这种方法有意义,但我想知道是否有方法来覆盖此行为,并使其成为如此如果传递NULL值,它会导致Oracle分配在函数头中指定的显式DEFAULT值?
我也考虑过做手工检查的选项...
IF(varNumber IS NULL) THEN
varNumber := 0;
END IF;
不过,也有数以百计的功能,在这可能是一个问题,更不用说大量的每个函数的参数,等等如果我能找到更一般的解决方案,我更喜欢它。
欢迎您提供任何见解。