DEFAULT 和赋值运算符之间的 PL/SQL 区别

Lib*_*aul 5 oracle plsql

我是 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,但我不确定是否有任何副作用。

ver*_*lli 4

如果您遵循 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)

所以我猜内部是一样的。

  • 无需猜测,它们是相同的。虽然我不明白“无典型值”注释,但该行默认将“employee_count”设置为“0”,在这种情况下“default”和“:=”之间实际上没有区别。 (2认同)