我是 PL/SQL 的新手,这个问题似乎很“幼稚”,所以我提前很抱歉,但谷歌根本没有帮助我......
以下程序之间有什么区别吗?
Procedure p1(a Number DEFAULT 0) Is
Begin
DBMS_OUTPUT.put_line(a);
End;
Procedure p2(a Number := 0) Is
Begin
DBMS_OUTPUT.put_line(a);
End;
Run Code Online (Sandbox Code Playgroud)
我已经检查过它们,所以当我在没有 args 的情况下调用它们时,输出是0,但我不确定是否有任何副作用。
如果您遵循 Oracle 的文档
您可以使用关键字 DEFAULT 而不是赋值运算符来初始化变量。您还可以使用 DEFAULT 来初始化子程序参数、游标参数和用户定义记录中的字段。
对于具有典型值的变量使用 DEFAULT。对于没有典型值的变量(例如计数器和累加器)使用赋值运算符。
DECLARE
blood_type CHAR DEFAULT 'O'; -- Same as blood_type CHAR := 'O';
hours_worked INTEGER DEFAULT 40; -- Typical value
employee_count INTEGER := 0; -- No typical value
BEGIN
NULL;
END;
/
Run Code Online (Sandbox Code Playgroud)
所以我猜内部是一样的。