北大青鸟Oracle教程集Chapter8.ppt_第1页
北大青鸟Oracle教程集Chapter8.ppt_第2页
北大青鸟Oracle教程集Chapter8.ppt_第3页
北大青鸟Oracle教程集Chapter8.ppt_第4页
北大青鸟Oracle教程集Chapter8.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

子程序和程序包,第八章,2,回顾,在上一章中,我们讨论了 异常 游标管理,3,目标,本章将讨论 子程序 程序包 有关子程序和程序包的信息,4,子程序16-1,命名的 PL/SQL 块 子程序的各个部分 声明部分 可执行部分 异常部分(可选),5,子程序16-2,子程序的优点 模块化 将程序分解为多个逻辑模块 可重用性 子程序在被执行之后,可以在任意数目的应用程序中使用 可维护性 子程序简化了维护,6,子程序16-3,子程序的类型 过程 用于执行某项操作 函数 用于执行某项操作并返回值,7,子程序16-4,过程 是使用 CREATE PROCEDURE 语句创建的 语法 CREATE or REPLACE PROCEDURE parameter list IS|AS ; BEGIN (executable statements) END,其中,Proc_name 是过程的名称,parameter list 是参数列表,local declarations 是局部声明,executable statements 是可执行语句。,8,子程序16-5,参数模式 IN 接受值 默认模式 OUT 将值返回给子程序的调用程序 IN OUT 接受值并返回已更新的值,9,子程序16-6,执行过程 使用 EXECUTE 语句 语法 EXECUTE Procedure_name (list of parameters) 其中,Procedure_name 是过程的名称,list of parameters 是参数列表。 示例 EXECUTE items (i201),10,子程序16-7,删除过程 使用 DROP PROCEDURE 语句进行删除 语法 DROP PROCEDURE procedure_name; 其中,procedure_name 是过程的名称。 示例 Drop procedure or_detail;,11,子程序16-8,函数 使用 CREATE FUNCTION 语句进行创建 语法 CREATE or REPLACE FUNCTION argument list RETURN datatype IS|AS (local declaration) BEGIN (executable statements) END,其中,function_name 是函数名称,argument list 是参数列表,datatype 是数据类型,local declaration 是局部声明,executable statements 是可执行语句。,12,子程序16-9,访问函数 用两种方式进行访问 使用 PL/SQL 块 使用 SQL 语句 仅接受 IN 参数,13,子程序16-10,通过 PL/SQL 块进行访问 语法 DECLARE (local declaration) BEGIN Variable:=function_name(parameter list) DBMS_OUTPUT.PUT_LINE(variable) END,其中,local declaration 是局部声明,Variable 是变量,function_name 是函数名称,parameter list 是参数列表。,14,子程序16-11,通过 SQL 语句进行访问 语法 SELECT function_name(parameter) FROM DUAL; 其中,function_name 是函数名称,parameter 是参数。 示例 Select sqr(16) from dual;,15,子程序16-12,函数的纯度级别 定义由函数读取或修改的数据种类 各种纯度级别 WNDS - 不写入数据库状态 RNDS - 不读取数据库状态 WNPS - 不写入程序包状态 RNPS - 不读取程序包状态,16,子程序16-13,限制 必须将函数存储在数据库中 函数只能接受 IN 参数,而不能接受 IN OUT 或 OUT 参数 它不得对于另一个块是局部的 形参不能是 PL/SQL 类型,17,子程序16-14,过程与函数,18,子程序16-15,自主事务处理 主事务处理启动自主事务处理 然后主事务处理被暂停 自主事务处理 SQL 操作 然后终止自主事务处理 恢复主事务处理 pragma AUTONOMOUS_TRANSACTION 用于标记子程序,19,子程序16-16,自主事务处理的特征 与主事务处理的状态无关 不影响主事务处理的结果 能够启动其他自主事务处理,20,程序包7-1,相关对象的封装 程序包的各部分 程序包规格说明 声明子程序 程序包主体 定义子程序,21,程序包7-2,程序包规格说明 使用 CREATE PACKAGE 命令进行创建 包含公用对象和类型 声明类型、常量、变量、异常、游标和子程序 可以在没有程序包主体的情况下存在,22,程序包7-3,程序包主体 使用 CREATE PACKAGE BODY 命令进行创建 包含子程序和游标的定义 包含私有声明 不能在没有程序包规格说明的情况下存在,23,程序包7-4,程序包的执行 可使用下列表示法: Package-name.type-name Package-name.object-name Package-name.subprogram-name 其中,Package-name 是程序包名称,type-name 是类型名称,object-name 是对象名称,subprogram-name 是子程序名称。 示例 DBMS_OUTPUT.PUT_LINE(Hello);,24,程序包7-5,重载 程序包中的多个子程序可以具有相同的名称 它们的形参是不同的 只能位于打包的子程序中 限制 如果子程序的参数仅名称或模式不同,则不能重载 不能基于其返回类型重载子程序,25,程序包7-6,程序包的优点 模块化 更轻松的应用程序设计 信息隐藏 新增功能 性能更佳,26,程序包7-7,公用项与私有项,27,有关子程序和程序包的信息,User_objects 用于检查对象是否存在 User_source 用于获取对象的代码,28,总结2-1,子程序是命名的 PL/SQL 块 PL/SQL 支持两种类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论