一、包的作用
• Oracle中包的概念与Java中包的概念非常类似,只是Java中的包是为了分类管理类,但是关键字都是package。
• 在一个大型项目中,可能有很多模块,而每个模块又有自己的过程、函数等。而这些过程、函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起的,即Procedures中),这些非常不方便查询和维护,甚至会发生误删除的事件。所以通过使用包就可以分类管理过程和函数。
• 包中还可以自定义自定义类型,从而在过程和函数中可以直接使用自定义变量。
二、包的构成
• 包规范部分
• 包体部分
--包规范定义语法 create or replace package 包名 as |is --定义存储过程 --定义函数 --定义ref游标类型 end 包名; --包体定义语法 create or replace package body 包名 is |as --实现存储过程 --实现函数 end 包名;
三、包的实例
• 定义包:
--定义包规范 create or replace package getemp_package as --定义一个游标类型 type emp_cursor_type is ref cursor; --定义一个存储过程 procedure getemp(p_sal in number,c_emp out emp_cursor_type); end getemp_package; --定义包体 create or replace package body getemp_package as --实现存储过程 procedure getemp(p_sal in number,c_emp out emp_cursor_type) as begin --打开游标 open c_emp for select * from emp where sal>p_sal; end getemp; end getemp_package;
• 调用包:
set serveroutput on; declare c_out getemp_package.emp_cursor_type; v_emp emp%rowtype; begin getemp_package.getemp(p_sal=>900,c_emp=>c_out); loop fetch c_out into v_emp; exit when c_out%notfound; dbms_output.put_line(v_emp.empno || '-' || v_emp.ename); end loop; end;
内容来源于网络如有侵权请私信删除
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!