以前咱們調用的dbms_output.put_line('')
,dbms_output
就是一個程序包函數
--聲明程序包中的過程,函數,自定義的類型 --程序包裏面的過程和函數不須要使用create or repalce create or replace package dbms_my is record類型等。 procedure $procedure_name$ [(參數...)]; function $function_name$ [(參數...)] ...... end dbms_my;
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; /