Oracle9i第7章 过程、函数和包.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译函数 在执行创建函数后,如果没有错误,系统会自动编译并存储到数据库中,一般不需要重新编译,即使是在被调用时,该函数也不会被重新编译。但有时,比如函数的依附对象改变后,存储过程就需要重新编译。其语法格式为: ALTER FUNCTION fun_name COMPILE; 该语句只能编译独立的函数,不能作用于包中的函数。 删除函数的语法: DROP FUNCTION fun_name; 可以查询视图user_objects获知某一程序的状态、类型等。 select object_name,object_type,status from user_objects where object_name=‘EVEN_ODD’; OEM方式创建 包 把相关的过程和函数归类到一起并赋予一定的管理功能和使用就叫包。 包是由一组相关的过程和函数组合而成的。包中的变量属于全局变量,包中的过程和函数在整个用户会话期间将用到这些变量。 包由两部分组成:包定义和包体。 开发人员可以使用两种不同的语句来分别创建程序包的定义部分和包体部分。用CREATE PACKAGE语句创建定义部分,用CREATE PACKAGE BODY语句创建包体部分。 包的开发步骤 包的开发需要几个步骤: 将每个存储过程调试正确; 用文本编辑软件将各个存储过程和函数集成在一起; 按照包的定义要求将集成的文本的前面加上包头; 按照包的定义要求将集成的文本的前面加上包体; 使用SQLPLUS或开发工具进行调试。 包的头部说明 包的头部的说明主要包括是将包所要包含的所有的存储过程、函数进行说明。 严格来说,就是把形成包的所有存储过程和函数的名字、变量等进行说明,以便在包体部分进行描述。 包头的创建 创建包头的语句格式如下: CREATE OR REPLACE PACKAGE包名 IS|AS 变量、常量及数据类型定义; 游标定义; 函数、过程定义和参数列表及返回类型; END包名; 包体的说明 包体是独立于包头的另外数据库对象,在编写整个存储包时,虽然将包头和包体写在一个文件(一个程序)并在SQL下进行解释生成包程序。 但是经过Oracle的PL/SQL解释的程序会被分成包的头部、包的体部及存储过程、函数部分。 当查询数据库字典时,可以看到Oracle数据库是将包头和包体分开的。 包体的创建 创建包主体部分的语句格式如下: CREATE OR REPLACE PACKAGE BODY包名 AS 游标、函数、过程的具体定义; END包名; 创建包头 在scott用户下创建一个包,包括一个处理过程和一个函数。其中,处理过程用于输出所有雇员名所在的部门名和位置。函数要求显示指定雇员在组织中的工作天数。 create or replace package demo_package is gdept dept.dname%type; gloc dept.loc%type; cursor c_rec is select * from emp; gday number; FUNCTION Hire_Day(eno emp.empno%TYPE) RETURN NUMBER; procedure output_deptmsg; end demo_package; 创建包体 CREATE OR REPLACE package body demo_package is gdept dept.dname%type; gloc dept.loc%type; cursor c_rec is select * from emp; gday number; FUNCTION Hire_Day(eno emp.empno%TYPE) RETURN NUMBER AS vhiredate emp.hiredate%TYPE; vday NUMBER; 第六章 过程、函数和包 在上一章讲的PL/SQL程序大多数都是没有名字的,这些PL/SQL语言编写的程序并未存放在Oracle的数据字典中。 存储过程和函数,以及触发器在Oracle中被视为子程序。这些子程序是以编译后的伪代码的形式存放在用户模式中的。用户在使用它们的时候就不必再对其进行编译了。 存储过程和函数都是PL/SQL的带名块,它们的不同在于过程没有返回值,而函数有返回值。 存储过程 存储过程是为了执行一定的操作任务而组合在一起的PL/SQL语句集,通常由以下几部份组成: 定义部分、执行部分和异常处理部分,其中执行部分是必需的,而其它两部分是可选的。 要创建存储过程,用户首先要有创建过程的权限,可以由DBA赋予用户创建过程的权限,语法为: grant create any pro

文档评论(0)

82393aa + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档