oracle学习笔记(二十一) 程序包

mac2022-06-30  95

程序包

之前我们调用的dbms_output.put_line(''),dbms_output就是一个程序包

程序包创建语法

1. 声明程序包

复制--声明程序包中的过程,函数,自定义的类型 --程序包里面的过程和函数不需要使用create or repalce create or replace package dbms_my is record类型等。 procedure $procedure_name$ [(参数...)]; function $function_name$ [(参数...)] ...... end dbms_my;

2. 实现程序包

复制create or replace package body dbms_my is procedure <过程名> is ...... end dbms_my;

程序包例子

复制--创建程序包 create or replace package dbms_my is --相当于自定义一个类 TYPE type_my_rec is record( empno number, ename varchar2(10), sal number ); procedure sum_sal(deptno department.deptno%type,sum in out number); function avg_sal(deptno department.deptno%type) return number; end dbms_my; --实现程序包 create or replace package body dbms_my is procedure sum_sal(p_deptno department.deptno%type,sum in out number) is sum number; begin select sum(sal) into sum from employee where deptno=p_deptno; end sum_sal; function avg_sal(deptno department.deptno%type) return number is result number; begin select avg(sal) into result from employee where deptno=p_deptno; return result; end avg_sal; end dbms_my; --测试程序包 declare --使程序包中定义的记录类型来声明变量 emp_rec dbms_my.type_my_rec; v_deptno number default 7879; sum_sal number; avg_sal number; x varchar2(100) := 'default value'; begin emp_rec.empno := 7879;--给类中的某个属性赋值 sum_sal := dbms_my.sum_sal(deptno);--调用过程 dbms_output.put_line(sum_sal);--输出结果 select dbms_my.avg_sal(7879) into avg_sal from dual;--调用函数 dbms_output.put_line(avg_sal);--输出结果 end; /

转载于:https://www.cnblogs.com/chaoyang123/p/11549617.html

最新回复(0)