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

本文介绍了Oracle中程序包的创建及使用方法,包括程序包的声明与实现部分的语法,并通过实例展示了如何定义和使用自定义记录类型、过程及函数。

程序包

之前我们调用的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值