Oracle Database 11g应用与开发教程 教学课件 作者 978 7 302 31490 5 第11章 存储过程、函数、触发器和程序包.pptVIP

Oracle Database 11g应用与开发教程 教学课件 作者 978 7 302 31490 5 第11章 存储过程、函数、触发器和程序包.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle 11g数据库应用教程 11.1 存储过程 在上面语法结构中的各选项说明: OR REPLACE:表示如果指定的过程已存在,则覆盖同名的存储过程。 Procedure_name:表示存储过程的名称。 Parameter:表示存储过程中的参数。 IN:表示向存储过程传递参数。 OUT:表示从存储过程返回参数。 Date_type:表示参数类型,在指定其长度时,不能指定其长度。 AS或IS后声明的变量主要用于过程体内,且不能加DECLARE语句。 从USER_PROCEDURE视图中可以获得有关过程的信息。表11-1给出了USER_PROCEDURE视图中部分列的说明。 在这里首先在SQL*PLUS中定义了一个变量,然后以这个变量为输出参数调用过程p_coursename,然后执行PRINT命令可以查看结果,如图所11-3所示: 11.1.4 为过程添加局部变量和子过程 利用SELECT语句查看Teacher表,执行效果如图11-6所示。 单击“编辑”按钮,可对选中的过程进行编辑。 单击“删除”按钮,可删除选中的过程。 11.3.2 DML触发器 执行删除Dept_ID为“082”的行,执行结果如图11-22所示: 11.3.6 管理触发器 11.3.7 使用OEM工具管理触发器 11.4 包 11.4.1 包概述 11.4.6 Oracle 11g的内置包 11.5 小结 11.6 习题 (3) 单击“确定”按钮,开始编写包规范定义部分,如图11-33所示。 图11-33 新建包的包规范定义 如果使用PL/SQL语句实现创建包,详细代码如下: CREATE OR REPLACE PACKAGE USER_YAO.pkg_course_count_maxgrd IS --声明存储变量 PROCEDURE prc_GetCourse (c_id IN USER_YAO.COURSES.COURSE_ID%TYPE, c_name OUT USER_YAO.COURSES.Cname%TYPE, c_credit OUT USER_YAO.COURSES.Credits%TYPE, c_stucount OUT NUMBER ); --声明函数 FUNCTION fn_maxgrade (f_c_id USER_YAO.SC.Course_ID%TYPE ) RETURN NUMBER ; END pkg_course_count_maxgrd; 可以看到,在包规范中没有为其提供任何代码,而只是简单定义了它们的名称和参数。而过程和函数体都被排除在外。因为规范仅是显示程序包中包括了哪些内容,而的实现则包含在包的主体部分。 需要注意规范中声明的各个项目(过程、函数和变量等)的顺序:如果各项目之间是无关的,那么项目之间的顺序是无关紧要的,但如果一个项目被另一个项目引用,那么必须在包规范中先声明被引用的项目。 2. 定义包体 程序包的包体是对包规范的实现,主要用来定义过程和函数的可执行代码。它是一个数据字典对象。只有在包规范成功编译后,包体才能被编译。在包规范中定义(不是预定义)的对象可以直接在包体中使用,不必再在包体中定义。包体的名称必须与规范的名称相同,这个相同的名称将包头和包体结合在一起。此外,包体中定义的过程和函数的名称、参数返回值则必须与规范中声明的完全匹配。简化语法结构如下: CREATE [OR REPLACE] PACKAGE BODY package_name {IS | AS} package_body END package_name; 其中: ● package_name指定包名,必须和前面包规范中的包名相匹配。 ● package_body定义了过程和函数的代码。 如果选用PL/SQL Developer工具创建包规范,具体步骤如下: 首先在PL/SQL Developer中右击已经定义包规范的pkg_course_count_maxgrd选项,从快捷菜单中选择“Create Body”项,如图11-34所示: 图11-34 选择定义包体 然后在打开如图11-35所示的窗口中编写包体定义部分。 图11-35包体定义窗口 再了解创建包体的语法后,用户也可以使用PL/SQL语句创建包体。下面是为例11-21创建的pkg_course_count_maxgrd包创建主体: CREATE [OR REPLACE] PACKAGE BODY package_name {IS | AS} package

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档