第十讲程序包.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据包 主讲:申友访 邮箱: 10bigbull@163.com 数据包概述 ? 数据包是一个数据库对象,它在逻辑上组合了相关的 PL/SQL 类型、对象和子程序。数据包一般有两部分, 即说明和主体。说明是应用程序的界面,它声明了可 用的类型、变量、常量、异常、游标和子程序。主体 则完全的定义了游标和子程序及如何执行说明的内容。 ? 与子程序不同,数据包不能被调用,或作为参数传递 或嵌套。其格式仍与子程序的格式类似。 包说明及主体 ? 格式: Create [ Or Replace] Package 数据包名 AS -- 公共类型和对象声明 -- 子程序说明 End [ 数据包名 ]; Create [or replace] package body 数据包名 as -- 私有类型和对象声明 -- 子程序主体 Begin -- 初始化语句 End [ 数据包名 ] ; 包调用 ? 包名 . 类型名; ? 包名 . 函数名 [ 参数表 ]; ? 包名 . 过程名 [ 参数表 ]; 包调用 ? 显示绑定到引用游标变量上的值 set AutoPrint on; variable tempCur RefCursor; exec StudentPackage.ReturnStudent(:tempCur); -- :表示 SQLPLUS 中的环境变量 包的删除 ? 包的删除 ? drop package [body] 数据包名 ; ? drop package body studentPackage; 建立包体的注意事项 1. 包体只能在包说明被编译后才进行编译 2. 在包说明中的过程、函数名称必须严格地与包体中实 现部分的过程、函数名称相匹配。 3. 在包体的执行部分可以对包说明中声明的变量进行初 始化,因为包不能传递参数,所以只能通过这种方法 进行初始化。包的初始化只在第一次调用包的时候运 行一次。 4. 在包体中声明的数据类型、变量、常量都是私有的, 只能在包体中使用。但在包体中可以使用在包说明中 声明的数据类型、变量、常量。 在数据包中使用 REFCURSOR 变量 create or replace package dept_data as type deptcurtyp is ref cursor return dept%rowtype; procedure open_dept_cv(dept_cv in out deptcurtyp); end dept_data; create or replace package body dept_data as procedure open_dept_cv(dept_cv in out deptcurtyp) is begin open dept_cv for select * from dept; end open_dept_cv; end dept_data; 使用 refcursor 游标 var a refcursor; set autoprint on; exec dept_data.open_dept_cv(:a); 示 例 create or replace package emp_package is g_deptno number(3):=30; procedure add_employee (eno number,name varchar2,salary number, dno number default g_deptno); procedure fire_employee(eno number); function get_sal(eno number) return number; end emp_package; 示 例 create or replace package body emp_package is function validate_deptno(v_deptno number) return boolean is v_temp int; begin select 1 into v_temp from dept where deptno=v_deptno; return true; exception when no_data_found then return false; end; 示 例 procedure add_employee(eno number,name varchar2,salary number, dno number default g_deptno) is begin if validate_deptno(dno) then insert into emp(empno,ename,sal,deptno

文档评论(0)

wangsux + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档