• 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;
    /
  • 相关阅读:
    让你平步青云的10个谈话技巧
    瑞士心理学家和精神分析医师――荣格
    市场倍增理论
    淘宝网格,淘宝富人群
    波波的个人简历
    磁盘修复工具
    9种没结果的爱(未婚者必读)!!!
    网络投机市场
    网页数据抽取的方法介绍
    C#扩展方法试用
  • 原文地址:https://www.cnblogs.com/chaoyang123/p/11549617.html
Copyright © 2020-2023  润新知