版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第14章 存储过程前面章节中讲解了PL/SQL有关的内容。现实上,PL/SQL主要包括匿名块、存储过程和存储函数三种方式的PL/SQL块。存储过程是一段存储在数据库中执行某功能的程序。运用存储过程可以方便用户运用数据库中的运用程序。本章重点引见如何创建存储过程以及如何在PL/SQL块中运用过程访问数据库中的数据。.14.1 存储过程简介在PL/SQL块中常把一些功能相对独立、需求经常执行的代码定义为一个子程序,在需求时可以根据子程序的名字进展调用,从而简化操作。这样不仅便于程序设计,而且有利于程序的调试。与其他PL/SQL块一样,在子程序中也可以定义变量、类型、游标等,同样可以进展异常处置操作
2、。需求留意的是有时必需向子程序提供参数向子程序传送参数。PL/SQL的子程序有两种方式,即过程和函数。过程与函数的区别在于函数有前往值,可以向调用者前往执行结果,而过程没有前往值。.14.1.1 认识存储过程在Oracle数据库中,可以将一些固定的操作集中起来由Oracle数据库效力器来完成,以实现某个义务,这就是存储过程。存储过程是Oracle开发者在数据转换或查询报表时经常运用的方式之一。一旦在数据库管理系统中创建了存储过程对象,用户就可以运用运用程序,经过简单命令执行存储过程。存储过程在第一次执行时,进展语法检查和编译,执行后,它的执行方案就驻留在高速缓存中,用于后续调用。存储过程可以接
3、纳和输出参数,前往执行存储过程的形状值,还可以嵌套调用。详细内容在下面讲解。.14.1.2 存储过程的作用存储过程的编写相对复杂,但是很多人都在运用它。这是由于它有着一系列的优点。简化复杂操作。添加数据独立性。提高平安性。实现表字段完好性。.14.2 创建存储过程和执行存储过程更倾向于数据库操作。存储过程的创建有固定的方式。我们可以运用语句的方法创建,也可以运用PL/SQL工具创建,本节主要学习运用语句的方法创建执行存储过程。.14.2.1 创建存储过程在PL/SQL语句中,可以运用create or replace procedure命令创建用户自定义存储过程。存储过程包括无参数的存储过程以
4、及各类有参数的存储过程。创建无参数的存储过程语法构造如下图。.14.2.1 创建存储过程1.创建无参数存储过程无参数的存储过程就是在创建的存储过程中不带任何参数,经过这种存储过程用做数据转换的几率比较大。【例如14-1】创建一个简单的存储过程,输出信息“人生追求情趣,年轻追求个性。【例如14-2】在数据表customersnew中,存储了顾客信息。【例如14-3】创建一个无参数存储过程,用于修正表customersnew中列credit_limit的数据,为status是“gold的credit_limit添加10000。.14.2.1 创建存储过程2.查看存储过程信息存储过程一旦创建,就存储
5、在数据库效力器上,Oracle允许开发人员查看曾经存在的存储过程脚本,这可以经过数据字典视图user_objects和user_source进展查看。当从视图中查询过程时,需求把称号大写。.14.2.1 创建存储过程1经过user_objects查看存储过程。【例如14-4】前面创建了创建一个无参数存储过程pro_print,如今经过数据字典user_objects查看存储过程信息。【例如14-5】利用user_source查看存储过程pro_print的详细信息。.14.2.1 创建存储过程3.显示存储过程的错误编写存储过程时由于各种缘由都有能够出现错误而导致过程编译失败,这种情况下,可以利
6、用视图user_errors查看详细的错误提示。【例如14-6】创建一个简单的带有错误的存储过程,输出信息“人生追求情趣,年轻追求个性。【例如14-7】利用user_errors查看存储过程的详细的错误提示。.14.2.1 创建存储过程4.执行存储过程存储过程一旦创建,便可以被其他用户调用。执行存储过程非常简单。当处于PL/SQL代码块中时,可以直接利用存储过程称号来调用和执行存储过程如下所示。【例如14-8】调用和执行存储过程pro_print。【例如14-9】运用execute命令调用存储过程pro_credit。.14.2.2 有参数的存储过程无参数的存储过程不会接受参数的传入和传出,是
7、针对表或者视图的查询或者删除操作,适宜进展数据的转换操作。但是存储过程可以带参数,实现特定的功能。参数的运用将添加存储过程的灵敏性,给数据库编程带来极大的方便。.14.2.2 有参数的存储过程存储过程的参数有三种:in输入类型参数、out输出类型参数和in out输入输出类型参数。在过程中可以定义参数,在调用该过程时,可以向过程传送实践参数。假设没有参数,那么过程名后面的圆括号及参数列表可以省略。参数的定义方式如下图。.14.2.2 有参数的存储过程三种参数传送方式的比较如表所示。参数默许值的作用是在调用过程时,假设没有提供实践参数,那么将此默许值作为实践参数传送给过程。数据类型用来指定参数的
8、类型,在参数定义中不能指定对参数的约束条件,即不能指定参数的长度和能否为空等属性。inoutin out是否默认默认必须明确指定必须明确指定参数传递方向从调用者到过程从过程到调用者两个方向形式参数的作用一个常量没有初始化的变量经过初始化的变量实际参数的形式常量、表达式、变量必须是一个变量必须是一个变量.14.2.3 in参数in参数,是输入类型的参数,表示这个参数输入给过程,供过程运用。本小节将讲述in参数的运用。前面我们讲解到运用存储过程可以检查数据的完好性。下面就经过例如加深了解。.14.2.3 in参数1.创建包含in参数的存储过程【例如14-10】对于表customersnew的插入操
9、作,我们希望对提供的信息,account_mgr_id做判别,假设符合要求,那么可以执行插入操作,否那么,制止添加顾客信息。.14.2.3 in参数2.在存储过程中为in参数赋值假设在存储过程内部,尝试修正in参数,那么将引起Oracle编译错误。【例如14-11】对于曾经创建的存储过程insert_cus,在存储过程内部,尝试将输入参数mgr_id赋值为145。.14.2.3 in参数3.重建带输入参数的存储过程【例如14-12】前面我们创建了一个无参数存储过程pro_credit,用于修正表customersnew中列credit_limit的数据,为status是“gold的credit
10、_limit添加10000。如今将该存储过程修正为带输入参数的存储过程,可以指定顾客编号对credit_limit进展相应处置。4.执行存储过程【例如14-13】执行存储过程pro_credit,将一切顾客的credit_limit添加10000。【例如14-14】在上述例子中,将一切顾客的credit_limit添加10000,如今将顾客编号为101的顾客添加10000。.14.2.4 out参数out参数是输出类型的参数,表示这个参数在存储过程中被复制,可以传给过程提以外的部分。与in参数相反,out参数是只出不进的参数。.14.2.4 out参数1.创建一个带out参数的存储过程,并执行
11、【例如14-15】对于前面例如中的存储过程insert_cus,在调用插入数据之后,我们经过查询表中数据才干验证能否执行胜利。假设运用out参数,更方便。【例如14-16】执行存储过程out_cus。.14.2.4 out参数2.创建包含in参数、out参数的存储过程【例如14-17】创建存储过程total_order,计算orders数据表中一切的订单总和,参数设置时,我们设置一个in参数,一个out参数。【例如14-18】执行存储过程total_order。.14.2.5 in out参数in out参数综合了上述两种参数类型,既向过程体传值,在过程中,也被赋值而传到过程体外。in out
12、参数既可以作为输入也可以作为输出。【例如14-19】结合运用in out参数的,实现交换两个变量的值。【例如14-20】执行存储过程exch,实现交换两个变量的值。.14.3 SQL Developer工具创建存储过程运用SQL Developer创建存储过程是比较简单的。该工具提供一个相对便利的操作环境,尤其对于存储过程的调试和错误的查找都比语句创建存储过程要方便。本节引见在SQL Developer中创建和调试存储过程。.14.3.1 创建存储过程SQL Developer提供了创建存储过程的模版,该模版允许输入存储过程名和参数,然后自动创建脚本。该脚本是一个简单框架,细节那么需求用户本人
13、开发。【例如14-21】利用SQL Developer工具创建存储过程exch1,实现交换两个变量的值。.14.3.2 调试存储过程存储过程创建之后,调试存储过程是很有必要的,它和其他言语的调试功能类似,可以设置断点,可以分步执行。本小节将简要引见如何在PL/SQL Developer中调试修正存储过程。【例如14-22】在SQL Developer中调试存储过程。.14.4 管理存储过程存储过程创建之后,可以对其进展调用。但是在后期运用中,假设有不适宜的地方,需求对存储过程进展修正和删除。本小节主要讲解图和修正存储过程、重新编译存储过程以及删除存储过程。.14.4.1 修正存储过程当存储过程
14、中出现错误时,可以修正存储过程。修正存储过程可以人为地把原来的存储过程删除,然后建立新的存储过程,也可以运用Oracle提供的语法直接完成修正。.14.4.1 修正存储过程修正存储过程运用replace关键字,即覆盖。我们普通在创建存储过程时,就将该关键字写上。【例如14-23】创建存储过程,完成一个数的加倍。【例如14-24】修正存储过程double1,将存储过程的参数设置为in out参数类型,并修正赋值方式。.14.4.2 重新编译存储过程存储过程在某些情况下是需求重新编译的,重新编译可以获得存储过程的最新形状。重新编译存储过程的语法构造如下图。【例如14-25】重新编译存储过程double1,完成一个数的加倍。【例如14-26】执行存储过程double1。.14.4.3 删除存储过程不再需求存储过程时,可以将其删除。利用语句删除存储过程的语法构造如下图。【例如14-27】删除存储过程double1。.14.4.3 删除存储过程除了运用语句方法外,还
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《丛林故事》选择题(含答案)
- 标点符号(测试)-2023年中考语文二轮复习(原卷版)
- 校园贷的危害主题班会
- 2024年个人健康管理系统咨询合同
- 一年级数学下册教案-7.找规律(111)-人教版
- 2024年公务人员信息保密条款
- 心理健康机构压力损伤评估制度
- 二年级下册数学导学案-3.4实践活动:剪一剪人教版
- 一年级上册数学教案 - 加减混合 人教版
- 2024年体育场馆照明系统升级合同
- 2024九年级英语下册 Unit 7 Work for PeaceLesson 39 Having Good Relationships in Your Community教学设计(新版)冀教版
- 2024电梯土建施工合同范本
- 甘肃省道德与法治初二上学期试题及答案解析
- 《深海》中的色彩叙事与镜像阐释
- 2023年中考英语备考让步状语从句练习题(附答案)
- 柔性生产线设计
- 物业项目交接计划方案
- 汽车维修工时定额核定方法编制说明
- 辛弃疾词《青玉案·元夕》
- T-HNKCSJ 002-2023 河南省地源热泵系统工程技术规范
- 《无人机驾驶基础》课件-项目四 无人机结构及性能
评论
0/150
提交评论