1. 程式人生 > >《Oracle PL/SQL開發指南》學習筆記31——原始碼除錯——函式和過程(第一部分,函式呼叫表示法)

《Oracle PL/SQL開發指南》學習筆記31——原始碼除錯——函式和過程(第一部分,函式呼叫表示法)

這節很基礎,卻發現了Oracle的可愛之處,一個函式呼叫就提供了這麼多選項,學起來真夠累的!

 

1. 在PL/SQL中呼叫函式表示法 

SQL> /* Formatted on 2018/12/4 0:08:00 (QP5 v5.256.13226.35538) */
SQL> CREATE OR REPLACE FUNCTION add_three_numbers (a    NUMBER := 0,
  2                                                b    NUMBER := 0,
  3                                                c    NUMBER := 0)
  4     RETURN NUMBER
  5  IS
  6  BEGIN
  7     RETURN a + b + c;
  8  END;
  9  /

函式已建立。

--位置表示法(Positional Notation)
SQL> BEGIN
  2     DBMS_OUTPUT.put_line (add_three_numbers (3, 4, 5));
  3  END;
  4  /
12

PL/SQL 過程已成功完成。

--命名錶示法(Named Notation)
SQL> BEGIN
  2     DBMS_OUTPUT.put_line (add_three_numbers (c=>3, a=>4, b=>5));
  3  END;
  4  /
12

PL/SQL 過程已成功完成。

SQL> BEGIN
  2     DBMS_OUTPUT.put_line (add_three_numbers (3, a=>4, b=>5));
  3  END;
  4  /
   DBMS_OUTPUT.put_line (add_three_numbers (3, a=>4, b=>5));
                         *
第 2 行出現錯誤:
ORA-06550: 第 2 行, 第 26 列:
PLS-00703: 列表中具有指定引數的多個例項
ORA-06550: 第 2 行, 第 4 列:
PL/SQL: Statement ignored

--混合表示法(Mixed Notation)
SQL> ed
已寫入 file afiedt.buf

  1  BEGIN
  2     DBMS_OUTPUT.put_line (add_three_numbers (3, c=>4, b=>5));
  3* END;
SQL> /
12

PL/SQL 過程已成功完成。

SQL> BEGIN
  2     DBMS_OUTPUT.put_line (add_three_numbers (3, a=>4));
  3  END;
  4  /
   DBMS_OUTPUT.put_line (add_three_numbers (3, a=>4));
                         *
第 2 行出現錯誤:
ORA-06550: 第 2 行, 第 26 列:
PLS-00703: 列表中具有指定引數的多個例項
ORA-06550: 第 2 行, 第 4 列:
PL/SQL: Statement ignored

--排除表示法(Exclusionary Notation)
SQL> ed
已寫入 file afiedt.buf

  1  BEGIN
  2     DBMS_OUTPUT.put_line (add_three_numbers (3, c=>4));
  3* END;
SQL> /
7

PL/SQL 過程已成功完成。

2. SQL呼叫函式表示法

SQL> SELECT add_three_numbers (2018, 2050, 2080) from dual;

ADD_THREE_NUMBERS(2018,2050,2080)
---------------------------------
                             6148


SQL> SELECT add_three_numbers (c=>2018, a=>2050, b=>2080) from dual;

ADD_THREE_NUMBERS(C=>2018,A=>2050,B=>2080)
------------------------------------------
                                      6148