- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库资料OraPlsqlTps4”
wnt 2000(C) copyright 应用于Web的面向对象关系型数据库管理系统:Oracle 使用数据包和数据库触发器 本章目标 数据包 数据包的优点 数据包说明 数据包主体 使用游标变量 数据库触发器简介 本章目标(续) 创建数据库触发器 INSTEAD OF 触发器 触发器的限制 启用/禁用触发器 放置触发器 编译和调试触发器 数据包 将逻辑相关的 PL/SQL 类型、对象和子程序进行分组的数据库对象 不能对它们进行调用,也不能对其传送参数或嵌套 这里有两个部分 说明 主体 数据包的优点 模块化特性 允许您将相关的类型、对象和子程序封装入一个命名的 PL/SQL 模块 具有简单、清晰、定义明确的接口,便于理解 可以协助应用程序开发 数据包的优点(续) 更简捷的应用程序设计 在设计应用程序时,只需要最初在数据包中提供接口信息 可以没有主体而对说明进行编码和编译 也可以编译引用数据包的子程序 在就绪可以完成应用程序之前不必定义数据包主体 数据包的优点(续) 信息隐藏 可以指定哪些类型、项目和子程序是公有的还是私有的 私有子程序的定义是隐含的,这样如果定义更改只会影响数据包(而不会影响应用程序) 简化了维护和增强,并保护了数据包的完整性 数据包的优点(续) 增加了功能性 数据包的公共变量和游标在会话期间持续存在 它们可以被环境中所执行的所有子程序共享 它们也允许您在事务间维护数据,不用将数据存储在数据库中 数据包的优点(续) 更佳的性能 首次调用数据包的子程序时,整个数据包将装载进内存 以后对数据包中相关子程序的调用就不用进行磁盘输入/输出操作了 如果程序包的函数发生更改,Oracle 不用重新编译调用子程序,因为它们不依赖数据包主体 数据包说明 是一个与应用程序的接口 声明可用的类型、变量、常数、例外、游标和子程序 让公用声明对应用程序可见 可以被认为是可操作的接口 数据包说明(续) 声明的范围对于数据库构架而言是局部的,对数据包而言是全局的 列出可以用于应用程序的数据包资源 数据包说明(续) 是使用 CREATE PACKAGE 命令创建的 CREATE [OR REPLACE] PACKAGE packagename AS -- 公共类型和对象声明 -- 子程序说明 END [数据包名称]; 数据包说明(续) 示例 CREATE PACKAGE airlines AS TYPE flight_day_type is RECORD (flightno flight_sch.flightno%TYPE, flight_day1 NUMBER(1)); CURSOR flight_cur RETURN flight_day_type; disp_day CHAR(15); FUNCTION day_fn(mday NUMBER) RETURN CHAR; PROCEDURE branch_sum (p_brnch branch.branch_code%TYPE); END airlines; 数据包主体 实现数据包说明 完全定义游标和子程序 将实现细节和私有声明从应用程序隐含 可以将其设想为“黑箱” 可被替换增强或在不更改接口的情况下被替换 可以在不重新编译调用程序的情况下对其进行更改 数据包主体(续) 声明范围对于数据包主体是局部的 除了在数据包主体内将不能访问到声明的类型和对象 只在首次引用数据包时,运行一次数据包的初始化部分 数据包主体(续) 使用 CREATE PACKAGE BODY 命令生成 CREATE [OR REPLACE] PACKAGE BODY 数据包名称 AS -- 私有类型和对象声明 -- 子程序主体 [BEGIN -- 初始化语句 ] END [数据包名称]; 数据包主体(续) CREATE PACKAGE BODY airlines AS CURSOR flight_cur RETURN flight_day_type IS SELECT flightno, reoute_code, flight_day1, flight_day2 FROM flight_sch; FUNCTION day_fn(mday NUMBER) RETURN CHAR IS BEGIN 语句 ; END day_fn; ... ... END airlines; 引用数据包对象 必须使用点符号引用数据包对象和子程序 数据包名.类型名 数据包名.对象名 数据包名.子程序名 示例 airlines.day_fn(4); 维护数据包 可以使用 DROP 命令删除数据包 DR
文档评论(0)