zoukankan      html  css  js  c++  java
  • 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;
    /
  • 相关阅读:
    idea拉取git项目并创建为maven项目(新创建github项目)
    寒假学习进度-4
    寒假学习进度-3
    寒假学习进度-2
    寒假学习进度-1
    面向对象设计原则
    Servlet中生成json文件,echarts模板调用
    Mapreduce--数据清洗
    Tutorial 06_MapReduce实例WordCount
    爬虫学习-入门
  • 原文地址:https://www.cnblogs.com/chaoyang123/p/11549617.html
Copyright © 2011-2022 走看看