资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
第11页 / 共29页
第12页 / 共29页
第13页 / 共29页
第14页 / 共29页
第15页 / 共29页
第16页 / 共29页
第17页 / 共29页
第18页 / 共29页
第19页 / 共29页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,第一级,第二级,*,子程序和程序包,第八章,回顾,在上一章中,我们讨论了,异常,游标管理,2,目标,本章将讨论,子程序,程序包,有关子程序和程序包的信息,3,子程序16-1,命名的,PL/SQL,块,子程序的各个部分,声明部分,可执行部分,异常部分(可选),4,子程序16-2,子程序的优点,模块化,将程序分解为多个逻辑模块,可重用性,子程序在被执行之后,可以在任意数目的应用程序中使用,可维护性,子程序简化了维护,5,子程序16-3,子程序的类型,过程,用于执行某项操作,函数,用于执行某项操作并返回值,6,子程序16-4,过程,是使用,CREATE PROCEDURE,语句创建的,语法,CREATE or REPLACE PROCEDURE parameter list,IS|AS,;,BEGIN,(executable statements),END,其中,,Proc_name,是过程的名称,,parameter list,是参数列表,,local declarations,是局部声明,,executable,statements,是可执行语句。,7,子程序16-5,参数模式,IN,接受值,默认模式,OUT,将值返回给子程序的调用程序,IN OUT,接受值并返回已更新的值,8,子程序16-6,执行过程,使用,EXECUTE,语句,语法,EXECUTE Procedure_name(list of parameters),其中,,Procedure_name,是过程的名称,,list of parameters,是参数列表。,示例,EXECUTE items(i201),9,子程序16-7,删除过程,使用,DROP PROCEDURE,语句进行删除,语法,DROP PROCEDURE procedure_name;,其中,,procedure_name,是过程的名称。,示例,Drop procedure or_detail;,10,子程序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,是可执行语句。,11,子程序16-9,访问函数,用两种方式进行访问,使用,PL/SQL,块,使用,SQL,语句,仅接受,IN,参数,12,子程序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,是参数列表。,13,子程序16-11,通过,SQL,语句进行访问,语法,SELECT function_name(parameter)FROM DUAL;,其中,,function_name,是函数名称,,parameter,是参数。,示例,Select,sqr,(16)from dual;,14,子程序16-12,函数的纯度级别,定义由函数读取或修改的数据种类,各种纯度级别,WNDS,-,不写入数据库状态,RNDS,-,不读取数据库状态,WNPS,-,不写入程序包状态,RNPS,-,不读取程序包状态,15,子程序16-13,限制,必须将函数存储在数据库中,函数只能接受,IN,参数,而不能接受,IN OUT,或,OUT,参数,它不得对于另一个块是局部的,形参不能是,PL/SQL,类型,16,子程序16-14,过程,函数,作为,PL/SQL,语句执行,作为表达式的一部分调用,在规格说明中不包含,RETURN,子句,必须在规格说明中包含,RETURN,子句,可以返回任何值,必须返回单个值,可以包含,RETURN,语句,但是与函数不同,它不能用于返回值,必须包含至少一条,RETURN,语句,过程与函数,17,子程序16-15,自主事务处理,主事务处理启动自主事务处理,然后主事务,处理,被暂停,自主,事务处理,SQL,操作,然后终止,自主,事务,处理,恢复主事务,处理,pragma,AUTONOMOUS_TRANSACTION,用于标记子程序,18,子程序16-16,自主事务处理的特征,与主事务处理的状态无关,不影响主事务处理的结果,能够启动其他自主事务处理,19,程序包7-1,相关对象的封装,程序包的各部分,程序包规格说明,声明子程序,程序包主体,定义子程序,20,程序包7-2,程序包规格说明,使用,CREATE PACKAGE,命令进行创建,包含公用对象和类型,声明类型、常量、变量、异常、游标和子程序,可以在没有程序包主体的情况下存在,21,程序包7-3,程序包主体,使用,CREATE PACKAGE BODY,命令进行创建,包含子程序和游标的定义,包含私有声明,不能在没有程序包规格说明的情况下存在,22,程序包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);,23,程序包7-5,重载,程序包中的多个子程序可以具有相同的名称,它们的形参是不同的,只能位于打包的子程序中,限制,如果子程序的参数仅名称或模式不同,则不能重载,不能基于其返回类型重载子程序,24,程序包7-6,程序包的优点,模块化,更轻松的应用程序设计,信息隐藏,新增功能,性能更佳,25,程序包7-7,公用项,私有项,可以在程序包之外引用,不能在程序包之外引用,是在程序包规格说明中定义的,是在程序包主体中定义的,用于全局目的,用于局部目的,公用项与私有项,26,有关子程序和程序包的信息,User_objects,用于检查对象是否存在,User_source,用于获取对象的代码,27,总结2-1,子程序是命名的,PL/SQL,块,PL/SQL,支持两种类型的子程序,即过程和函数,过程用于执行某项操作,函数用于计算并返回值,程序包是一种数据库对象,它是相关对象的封装,28,总结2-2,程序包由两部分组成,即规格说明和主体,允许重载打包的子程序,使用程序包的优点是:模块化、更轻松的应用程序设计、信息隐藏、新增功能以及性能更佳,29,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6