- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章 开发子程序和包理论
第5章 理论 第 PAGE 29 页 共 NUMPAGES 29 页
第5章
开发子程序和包
本章学习内容
1. 过程
2. 函数
3. 程序包
本章学习目标
1. 掌握过程的创建与使用
2. 掌握函数的创建与使用
3. 掌握包的创建与使用
本章简介
在第4章中,我们已经学习了PL/SQL语言、程序结构、流程控制、异常处理、开发动态SQL等知识。但是到目前为止,所创建的PL/SQL块都是匿名的,其缺点是每次执行时都需要被重新编译且没有被存储在数据库中,因此不能被其他的PL/SQL块使用,为了让编写的PL/SQL语句成为数据库的存储单元并能够共享,实现代码重用必须要使用程序包、过程和函数这些对象。
本章将学习过程、函数和程序包等概念。过程与函数是命名的PL/SQL块,可以被编译后存储在数据库中,以备执行。因此其他PL/SQL块可以按名称来调用它们。所以可以将商业逻辑、企业规则写成过程或函数保存到数据库中,以便共享。过程一般用于执行一个指定的操作,而函数一般用于计算并返回一个值。过程与函数也被称为子程序,因为它们是独立的、能够被父程序调用。程序包用于将逻辑相关的PL/SQL块或元素组织在一起,作为一个完整的单元存储在数据库中,用名称来标识程序包,它具有面向对象的程序设计语言的特点,是对PL/SQL块或元素的封装。程序包类似于JAVA语言中的类,其中的变量相当于类中的成员变量,过程和函数相当于类中的方法。
开发子程序
子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用。PL/SQL有两种类型的子程序:过程和函数。其中,过程用于执行特定操作,而函数则用于返回特定数据。通过将商业逻辑和企业规则集成到PL/SQL子程序中,可以简化客户端应用的开发和维护,提高应用的性能。
开发过程
过程一般用于执行一个指定的操作,可以将常用的特定操作封装成过程。
语法:
CREATE [OR REPLACE] PROCEDURE procedure_name
(argument1 [mode1] datatype1, argument2 [mode2] datatype2, ...)
IS [AS]
声明部分
BEGIN
执行部分
EXCEPTION
异常处理部分
END;
在语法中,procedure_name用于指定过程名称,argument1、argument2等则用于指定过程的参数,IS或AS用于开始一个PL/SQL块。注意,当指定参数数据类型时,不能指定其长度。另外,当创建过程时,既可以指定输入参数(IN),又可以指定输出参数(OUT)及输入输出参数(IN OUT)。通过在过程中使用输入参数,可以将应用环境的数据传递到执行部分。通过使用输出参数,可以将执行部分的数据传递到应用环境。定义子程序参数时,如果不指定参数模式,则默认为输入参数;如果需要定义输出参数,则必须指定OUT关键字;如果需要定义输入输出参数,则必须指定IN OUT关键字。以下通过示例说明创建过程和使用各种参数模式的方法。
1. 创建过程:无参数
以下通过删除表中重复记录为例,来说明创建该种过程的方法。假设存在表tb_test,表中的数据如图1.5.1所示。
图1.5.1 表tb_test中的数据
创建一个无参过程,完成删除此表中重复记录的操作,如图1.5.2所示。
图1.5.2 创建无参过程
创建了过程proc_del_dup_rec之后,即可调用该过程。在SQL*Plus环境中,调用过程有两种方法:使用exec命令或者使用call命令。图1.5.3中使用了exec命令调用过程proc_del_dup_rec,并显示执行效果。
显示删除重复记录后的结果
显示删除重复记录后的结果
图1.5.3 使用exec命令调用过程,并显示执行效果
调用过程时,也可以
调用过程时,也可以使用PL/SQL块的方式,以下代码将以PL/SQL块的方式来调用proc_del_dup_rec过程:
SQL begin
2 proc_del_dup_rec;
3 end;
4 /
PL/SQL过程已成功完成。
注意:调用过程时,无需添加exec或call关键字。
2. 创建过程:带有IN参数
创建过程时,可以通过使用输入参数,将应用程序的数据传递到过程中。当为过程定义参数时,如果不指定参数模式,则默认为输入参数,另外也可使用IN关键字显式地定义输入参数。下面以查询公交线路为例,说明创建这种过程的方法。假设存在表tb_station,其表中的数据如图1.5.4所示
图1.5.4 表tb_station中的
创建一个带有IN参数的过程proc_transit_station,用于让用户输入公交车次、起点站和终点站即可查询出中间经过的公交线路,如图1.5.
您可能关注的文档
最近下载
- 预制板桥梁吊装方案(完整版).docx
- 工程质量管理体系与保证措施.doc VIP
- 室外承插式铸铁给水管道锚固工作量的结算问题.pdf VIP
- 2025至2030中国稀土元素行业产业运行态势及投资规划深度研究报告.docx
- 统编版2025-2026学年上学期六年级语文上册第二单元基础达标卷(有答案).pdf VIP
- 学堂在线 新闻摄影 期末考试答案.docx VIP
- 某某游客中心建设项目初步设计(替代可研报告).doc VIP
- 学堂在线 研究生的压力应对与健康心理 期末考试答案.docx VIP
- 学堂在线 研究生的压力应对与健康心理 章节测试答案.docx VIP
- GBT50344-2019建筑结构检测技术标准.docx VIP
文档评论(0)