- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章子程序和程序包剖析
第5章 子程序和程序包
子程序是已命名的PL/SQL块,它们存储和在数据库中,可以为它们指定参数,可以从任何数据库客户端和应用程序中调用它们。命名的PL/SQL程序包括存储过程和函数,程序包是存储过程和函数的集合。
一、子程序
子程序具有声明部分、可执行部分和可选的异常处理部分。声明部分包含类型、游标、常量、变量、嵌套子程序的声明。可执行部分包含赋值、控制执行过程和操纵数据库的语句。异常处理部分包含异常处理程序。
子程序的优点。
(1)模块化;(2)可重用性;(3)可维护性;(4)安全性;
子程序有两种类型:
(1)过程;(2)函数;
一般使用过程来完成某种操作,使用函数完成操作并返回值。
1、过程。
Oracle的过程很类似sql server中的存储过程。他可以被赋予参数,存储在数据库中,由其他应用程序或PL/SQL调用。
创建过程的格式如下:
例一
2、执行过程
在sql提示符下,使用execute语句来执行过程。语法如下。
3、调用程序是通过参数向被调用的过程传递值的。参数传递的模式有3种。In、out、in out,分别对应输入、输出、输入输出。默认是输入参数。如例一。
例二.演示如何创建带in和out参数的过程。
可以在一个匿名的PL/SQL程序中执行max_sal_emp过程,以显示输出参数的结果。当过程返回值时,只能通过另一个程序查看该值。因此需要编写一个程序,显示out参数的值。以下代码用于显示max_sal_emp过程的返回值。
再看一个例子,也是带in和out 参数,用了游标。
例三。演示如何创建带in out参数的过程。
要执行上述swap过程,请输入以下代码。
调用过程swap,并查看结果,可以使用匿名的pl/sql语句来执行,如下。
4、过程创建之后,只有创建该过程的用户或管理员才能调用它。其他用户如果要调用该过程,需要得到过程的execute权限。下面代码将权限赋给某个用户或角色。
5、删除过程。
格式:drop procedure 过程名;
二、函数
函数与过程相似,也是数据库中存储的已命名的PL/SQL程序块。函数的主要特性是必须返回一个值。用return语句指定函数返回值的数据类型。在函数体的任何地方都可以通过return语句从函数返回一个值。
1、定义函数的格式。
/*注意*/
(1)函数只能带有in参数,不能带有in out参数和out参数。
(2)形式参数只能使用数据库类型,不能使用PL/SQL类型。
(3)函数的返回语句中返回表达式的值的类型必须与定义的类型一致。
例四.下列语句创建了一个简单函数。
与过程不同,函数不能单独执行,只能通过SQL语句或PL/SQL程序块来调用。比如:
例五。下面的例子说明了如何使用参数及定义返回类型。
要调用上述函数,我们还得写出一个PL/SQL块,如下。
当然,具体到上述函数item_price_range,用PL/SQL块完成了调用,也可以直接写select item_price_range(3000) from dual; 效果一样。
2、函数的授权。
与过程相同,用户要调用其他用户的函数也需要得到授权。权限的名称也是execute。下面语句将fun_hello函数的调用权限授予用户martin。
3、删除函数
4、使用函数的限制。
(1)从select语句调用的任何函数均不能修改数据库表;
(2)函数调用执行update的存储过程,则该函数不能在sql语句内使用。
5、函数和过程的比较。
过程 函数 作为PL/SQL语句执行 作为表达式的一部分被调用 在规范中不包括return子句 必须包含return子句 不返回任何值 必须返回单个的值 可以包含return语句,但不能用于返回值,需要返回值就采用out参数。 必须包含至少一条return语句
三、自主事务处理
见如下例子。
例六.创建一个过程P2
再创建一个过程P1
执行。
上述例子中,过程p1调用了过程P2,但由于过程P2中有回滚事务rollback的操作,使得过程P1的更新操作也失败。
如果在过程p2中加入PRAGMA AUTONOMOUS_TRANSACTION ,如下所示,就不会出现上述现象了。我们称P2使用了自主提交事务。
您可能关注的文档
- 第3章三维人体扫描仪在服装定制中的应用剖析.docx
- 第3章因特网基础剖析.doc
- 2016高考文综全国1卷试题(含答案)精选.docx
- 2016高考物理二轮复习考前保温训练4电场和带电粒子在电场中的运动(含解析)精选.doc
- 第3章使用PLSQL剖析.doc
- 2016高考材料作文精选.docx
- 第3章文字处理软件Word2003习题答案剖析.doc
- 第3章中文WORD2010剖析.pptx
- 2016高考物理试题分类汇—选修3—5精选.doc
- 第3章常用汉字输入法剖析.doc
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第2课时 点的坐标特征.pptx
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第3课时 建立适当的平面直角坐标系.pptx
- 北师大版(2024)八年级数学上册课件 4.3 一次函数的图象 第1课时 正比例函数的图象及性质.pptx
- (人教A版数学选择性必修三)讲义第15讲7.1.1条件概率(学生版+解析).docx
- (人教A版数学选择性必修三)讲义第19讲8.1成对数据的统计相关性(8.1.1变量的相关关系+8.1.2样本相关系数)(学生版+解析).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第2课时 加减消元法.pptx
- (人教A版数学选择性必修一)2025年秋季学期讲义第01讲1.1.1空间向量及其线性运算(学生版+教师版).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第1课时 代入消元法.pptx
- 北师大版(2024)八年级数学上册课件 5.3 二元一次方程组的应用 第3课时 二元一次方程组的应用(3).pptx
- 北师大版(2024)八年级数学上册课件 5.4 二元一次方程与一次函数 第2课时 用二元一次方程组确定一次函数表达式.pptx
文档评论(0)