Oracle学习笔记二十五:包的定义与调用
1.Oracle学习笔记一:Windows下安装Oracle 11g R22.Oracle学习笔记二:数据库操作与使用3.Oracle学习笔记三:数据库创建及客户端使用4. Oracle学习笔记四:表的创建与管理5.Oracle学习笔记五:数据库实例管理6.Oracle学习笔记六:参数文件管理7.Oracle学习笔记七:控制文件管理8.Oracle学习笔记八:重做日志与归档模式管理9.Oracle学习笔记九:表空间与数据文件管理10.Oracle学习笔记十:用户权限管理11.Oracle学习笔记十一:监听网络管理12.Oracle学习笔记十二:EM管理工具13.Oracle学习笔记十三:备份与恢复基础知识14.Oracle学习笔记十四:备份与恢复案例15.Oracle学习笔记十五:基本数据类型16.Oracle学习笔记十六:常用函数17.Oracle学习笔记十七:PL/SQL编程简介18.Oracle学习笔记十八:PL/SQL变量类型19.Oracle学习笔记十九:PL/SQL流程控制语句20.Oracle学习笔记二十:游标的简介和使用21.Oracle学习笔记二十一:动态游标的使用22.Oracle学习笔记二十二:存储过程23.Oracle学习笔记二十三:自定义函数24.Oracle学习笔记二十四:自定义函数之返回结果集
25.Oracle学习笔记二十五:包的定义与调用
26.Oracle学习笔记二十六:触发器的使用27.Oracle学习笔记二十七:索引的使用28.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;
合集:
Oracle学习笔记
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库