《Oracle PL/SQL开发指南》学习笔记31——源码调试——函数和过程(第一部分,函数调用表示法)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpdlzu80100/article/details/84782050

这节很基础,却发现了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

猜你喜欢

转载自blog.csdn.net/hpdlzu80100/article/details/84782050