我有一個關於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;
不過,也有數以百計的功能,在這可能是一個問題,更不用說大量的每個函數的參數,等等如果我能找到更一般的解決方案,我更喜歡它。
歡迎您提供任何見解。