- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章存储过程、函数、触发器和程序包
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 小结 如果使用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_body END package_name; 【例11-22】为上例创建的包pkg_course_count_maxgrd实现其中存储过程和函数的功能。 CRE
文档评论(0)