我有一个关于 Oracle 中 PL/SQL 函数的默认值的快速问题。以这个程序为例;
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;
但是,有数百个函数可能会成为问题,更不用说每个函数有大量参数,所以如果我能找到更通用的解决方案,我会更喜欢它。
为您可以提供的任何见解而欢呼。