• ORACLE 程序包


    程序包由PL/SQL程序元素(变量,类型)和匿名PL/SQL(游标),命名PL/SQL 块(存储过程和函数)组成。

    程序包可以被整体加载到内存中,这样可以大大加快程序包中任何一个组成部分的访问速度。

    程序包由规范和包主题组成:

    规范

    用于规定程序包中可以使用哪些变量,类型,游标和子程序(该规范一定要在“包主体”之前被创建)

    例子:

    创建一个程序包“规范”,首先在该程序中声明一个可以获取指定部门的平均工资的函数,然后再声明一个可以实现按照指定比例上调指定职务的工资的存储过程

    create or replace package pack_emp is
    function fun_avg_sal(num_deptno number) return number; --获取指定部门的平均工资
    procedure pro_regulate_sal(var_job varchar2,num_proportion number); --按照指定比例上调指定职务的工资
    end pack_emp;
    /

    主体

    包含了在规范中声明的游标,过程和函数的实现代码,还有内部变量。

    创建程序包pack_emp的主体,在该主体中实现对应“规范”中声明的函数和存储过程:

    create or replace package body pack_emp is
    function fun_avg_sal(num_deptno number) return number is
    num_avg_sal number;
    begin
    select avg(sal) into num_avg_sal from emp
    where deptno=num_deptno;
    return(num_avg_sal);
    exception
    when no_data_found then
    dbms_output.put_line('该部门编号不存在雇员记录');
    return 0;
    end fun_avg_sal;

    procedure pro_regulate_sal(var_job varchar2,num_proportion number) is
    begin
    update emp
    set sal =sal*(1+num_proportion)
    where job=var_job;
    end pro_regulate_sal;
    end pack_emp;
    /

    调用该包中的函数和过程:

    declare
    num_deptno emp.deptno%type;
    var_job emp.job%type;
    num_avg_sal emp.sal%type;
    num_proportion number;
    begin
    num_deptno:=10;
    num_avg_sal:=pack_emp.fun_avg_sal(num_deptno);
    dbms_output.put_line(num_deptno||'号部门的平均工资是:'||num_avg_sal);

    var_job:='SALESMAN';
    num_proportion:=0.1;
    pack_emp.pro_regulate_sal(var_job,num_proportion);
    end;
    /

  • 相关阅读:
    cds.data:=dsp.data赋值有时会出现AV错误剖析
    iOS -- 十进制、十六进制字符串,byte,data等之间的转换
    iOS -- 原生NSStream实现socket
    CA认证原理以及实现(下)
    CA认证原理以及实现(上)
    android -- 存储byte
    iOS -- 字符串(NSString *)转uint8_t的两种方法
    Android -- AsyncTask 使用和缺陷
    Swift oc 混编
    Android -- native关键字
  • 原文地址:https://www.cnblogs.com/gaofangquan/p/7382791.html
Copyright © 2020-2023  润新知