讓我們來看看最新的Oracle版本(12c R1)在撰寫之時的文檔。你明確地要求子程序參數,所以我們先來看看。
Default Values for IN Subprogram Parameters:
在聲明正式IN參數,你可以爲它指定一個默認值。具有默認值的形式參數稱爲可選參數,因爲其相應的實際參數在子程序調用中是可選的。如果省略實際參數,則調用將默認值分配給形式參數。
該文檔沒有提到default
關鍵字,但它仍然有效。示例(12c R1中):
declare
function f1(a in number) return number is begin return a; end;
function f2(a in number := 2) return number is begin return a; end;
function f3(a in number default 3) return number is begin return a; end;
begin
dbms_output.put_line(f1(1));
dbms_output.put_line(f2);
dbms_output.put_line(f3);
end;
/
按預期打印1,2,3。
但是,由於沒有在授權文檔中提及,我不鼓勵在此上下文中使用default
關鍵字。
其它有趣的上下文是Initial Values of Variables and Constants:
要指定的初始值,使用賦值運算符(:=)或關鍵字DEFAULT,隨後的表達式。
這就是唯一一次提到default
關鍵字。所有文檔示例僅使用分配。
結論
技術上default
關鍵字和分配新建分配FY在兩種contextes相同的工作,但只有賦值是在文檔中推廣。我認爲Oracle在這種情況下實際上已經廢棄default
關鍵字,因此我不會推薦在新的PL/SQL代碼中使用它。分配操作員可以毫不費力地完成相同的工作。
嗯,這很有道理。非常感謝 – LibertyPaul
不需要猜測,它們是相同的。雖然我不明白「No typical value」註釋,但該行默認將'employee_count'設置爲'0',在這種情況下'default'和':='之間沒有區別。 –
@JeffreyKemp我猜想它在「使用賦值運算符的變量(如計數器和累加器)」。實際上我總是在參數和操作符上使用'DEFAULT'來初始化變量。 – vercelli