• 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;
    /

  • 相关阅读:
    Nginx+uWsgi+Django+Python+MongoDB+mySQL服务器搭建
    MongoDB的副本集Replica Set
    Google论文之一Bigtable学习翻译
    python类的成员和装饰器
    nginx代码分析进程和模块初始化
    MongoDB的分片Sharding
    MongoDB的分片和副本集部署
    安装sql server 2008 r2
    Hello, World!
    vs2010仿Myeclipse open file 功能插件
  • 原文地址:https://www.cnblogs.com/xcnblog3035/p/5238920.html
Copyright © 2020-2023  润新知