《Oracle PL/SQL開發指南》學習筆記31——原始碼除錯——函式和過程(第一部分,函式呼叫表示法)
阿新 • • 發佈:2018-12-07
這節很基礎,卻發現了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