大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Oracle学习笔记二十五:包的定义与调用「建议收藏」,希望您对编程的造诣更进一步.
一、包的作用
• 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;
原文地址:https://www.cnblogs.com/atomy/archive/2022/06/15/16345450.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5105.html