![Oracle数据库第讲四_第1页](http://file4.renrendoc.com/view/efe781240cb977e1ff486d492f12678c/efe781240cb977e1ff486d492f12678c1.gif)
![Oracle数据库第讲四_第2页](http://file4.renrendoc.com/view/efe781240cb977e1ff486d492f12678c/efe781240cb977e1ff486d492f12678c2.gif)
![Oracle数据库第讲四_第3页](http://file4.renrendoc.com/view/efe781240cb977e1ff486d492f12678c/efe781240cb977e1ff486d492f12678c3.gif)
![Oracle数据库第讲四_第4页](http://file4.renrendoc.com/view/efe781240cb977e1ff486d492f12678c/efe781240cb977e1ff486d492f12678c4.gif)
![Oracle数据库第讲四_第5页](http://file4.renrendoc.com/view/efe781240cb977e1ff486d492f12678c/efe781240cb977e1ff486d492f12678c5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
oracle第5讲1.pl/sql的介绍2.pl/sql的基础主讲李珩oracle数据库pl/sql的介绍■pl/sql是什么pl/sql(procedurallanguage/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。■学习必要性[图]①提高应用程序的运行性能②模块化的设计思想[分页的过程,订单的过程,转账的过程..]③减少网络传输量④提高安全性■缺点移植性不好.
主讲李珩oracle数据库pl/sql的介绍—用什么开发pl/sql■
sqlplus开发工具sqlplus是oracle公司提供的一个工具,这个因为我们在以前介绍过的:举一个简单案例:编写一个存储过程,该过程可以向某表中添加记录.■
pl/sqldeveloper开发工具pl/sqldeveloper是用于开发pl/sql块的集成开发环境(ide),他是一个独立的产品,而不是oracle的一个附带品。举一个简单案例:编写一个存储过程,该过程可以删除某表记录.主讲李珩oracle数据库创建过程基本语法:createprocedure过程名(参数1…)isbegin执行语句;end;/执行过程语法:exec
过程名(传入参数…)pl/sql基础知识—介绍■
介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql语句及语法规则。pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块。比如:分页存储过程模块、订单处理存储过程模块、转账存储过程模块..而且如果使用pl/sql编程,我们可以轻松的完成非常复杂的查询要求.等学习了pl/sql编程基础再讲吧主讲李珩oracle数据库pl/sql基础知识—pl/sql可以做什么■
简单分类
|-----过程(存储过程) | |-----函数 块(编程)-------| |-----触发器
| |-----包分分类吧主讲李珩oracle数据库pl/sql基础知识—编写规范■
编写规范①注释单行注释--多行注释/*....*/来划分②标识符号的命名规范1)当定义变量时,建议用v_作为前缀v_sal2)当定义常量时,建议用c_作为前缀c_rate3)当定义游标时,建议用_cursor作为后缀emp_cursor;4)当定义例外时,建议用e_作为前缀e_error
主讲李珩oracle数据库pl/sql基础知识—pl/sql块介绍■
介绍块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块。要完成相对简单的应用功能,可能只需要编写一个pl/sql块;但是如果要想实现复杂的功能,可能需要在一个pl/sql块中嵌套其它的pl/sql块.
主讲李珩oracle数据库pl/sql基础知识—pl/sql块结构■
块结构示意图pl/sql块由三个部分构成:定义部分、执行部分、例外处理部分.如下所示:declare/*定义部分-----定义常量、变量、游标、例外、复杂数据类型*/begin/*执行部分-----要执行的pl/sql语句和sql语句*/exception/*例外处理部分----处理运行的各种错误*/end;★可以和java编程结构做一个简单的比较 定义部分是从declare开始的,该部分是可选的。执行部分是从begin开始的,该部分是必须的。例外处理部分是从exception开始的,该部分是可选的主讲李珩oracle数据库pl/sql基础知识—pl/sql实例■
实例1-只包括执行部分的pl/sql块☞相关说明:dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。
案例:输出hello,world主讲李珩oracle数据库pl/sql基础知识—pl/sql实例■
实例2-包含定义部分和执行部分的pl/sql块☞相关说明:&表示要接收从控制台输入的变量||表示把两个串拼接案例:根据用户输入的雇员编号,显示该雇员的名字主讲李珩oracle数据库pl/sql基础知知识—pl/sql实例■实例3-包含定义部部分、执行行部分和例例外处理部部分为了避免pl/sql程序的运行行错误,提提高pl/sql的健壮性,,应该对可可能的错误进行行处理,这个很有必必要:①比如在实实例2中,如果输输入了不存存在的雇员员号,应当当做例外处处理.②有时出现异异常,希望望用另外的的逻辑处理理,[网示]比如,如果果不存在就就加入编号号为1,名字为’马大哈’这么一个人人.我们看看如如何完成①①的要求相关说明:oracle事先预定义义了一些例例外,no_data_found就是找不到到数据的例例外.主讲李珩珩oracle数据库pl/sql基础知知识—过程程快速入门■过程过程用于执执行特定的的操作.当建立过程程时,既可可以指定输输入参数(in),也可以指定定输出参数数(out).通过在过程程中使用输输入参数,,可以将数数据传递到到执行部分分;通过使使用输出参参数,可以以将执行部部分的数据据传递到应应用环境.在sqlplus中可以使用用createprocedure命令来建立立过程。实例如下:①请考虑编写写一个过程程,可以输输入雇员名名,新工资可可修改雇员员的工资②如何调用用过程有两两种方法:exec过程名(参数值..)call过程名(参数值..)createprocedure过程名(变量in变量类型…,变量out变量类型…)is定义变量begin执行语句;end;主讲李珩珩oracle数据库pl/sql基础知识——过程快速入门■java中调用过程③如何在java程序中调用一一个存储过程程课堂小练习::编写一个过过程,可以接接受id和薪水,更新新薪水,如果果id不存在,需要要在exception中捕获,并给给出提示!需要在控制台台,和java程序中都调用用?如何使用过程程返回值。特别说明:对于过程我们们会在以后给给大家详细具具体的介绍,,现在请大家家先有一个概概念.主讲李珩珩oracle数据库动手体验:我我们写一个java程序来调用前前面的存储过过程pl/sql基础知识——函数快速入门■函数函数用于返回回特定的数据据,当建立函数时时,在函数头头部必须包含含return子句,而在函函数体内必须须包含return语句返回的数数据。我们可可以使用createfunction来建立函数,实际案例:在sqlplus中调用函数同样我们可以以在java程序中调用该该函数selectannual_income('SCOTT')fromdual;//这样可以通过rs.getInt(1)得到返回的结结果主讲李珩珩oracle数据库案例:请编写写一个函数,,可以接收用用户名并返回回该用户的年年薪.createfunction函数名(参数1…)return数据类型is定义变量;begin执行语句;end;var变量名变量量类型call函数名(参数值…)into:变量名;print变量名pl/sql基础知识——包■包包用于在逻辑辑上组合过程程和函数,它由包规范和和包体两部分分组成。①我们可以使使用createpackage命令来创建包包:实例:create[orreplace]package包名isprocedure过程名(变量名变量量类型…);function函数名(变量名变量量类型…)return数据类型;end;包的规范只包包含了过程和和函数的说明明,但是没有有过程和函数数的实现代码。包体用于于实现包规范范中的过程和和函数,主讲李珩珩oracle数据库请编写一个包包,该包有一一个过程,该该过程可以接接收用户名和和新的薪水,,(将来用于通通过用户名去去更新薪水))还有一个函函数,该函数数可以接收一一个用户名((将来要实现现得到该用户户的年薪是多多少)pl/sql基础知识——包②建立包体可以以使用createpackagebody命令createorreplacepackagebody包名isprocedure过程名(变量名变量量类型…)isbegin执行语句;end;function函数名(变量名变量量类型…)return数据类型is定义变量;begin执行语句;end;end;主讲李珩珩oracle数据库案例:请实现现前面定义的的包中的过程程和函数pl/sql基础知识——包③如何调用包的的过程或是函函数当调用包的过过程或是函数数时,在过程程和函数前需需要带有包名名,如果要访问其它方案案的包,还需需要在包名前前加方案名.如:特别说明:包是pl/sql中非常重要的的部分,我们们在使用过程程分页时,将将会再次体验验它的威力。主讲李珩珩oracle数据库exec方案名.包名.过程名(参数值..);call方案名.包名.过程名(参数值…);测试前面包中中的函数和过过程名是否正正确调用!pl/sql基础知识——触发器■触发器简单介介绍触发器是指隐隐含的执行的的存储过程。当定义触发发器时,必须须要指定触发发的事件和触触发的操作,,常用的触发发事件包括insert,update,delete语句,,而触触发操操作实实际就就是一一个pl/sql块。可可以使使用createtrigger来建立立触发发器。。特别说说明:我们会会在后面详详细为大家家介绍绍触发发器的的使用用,因因为触触发器器是非非常有有用的的,可维护护数据据库的的安全全和一一致性性。主讲李李珩珩oracle数据库库pl/sql基基础知知识——定义义并使使用变变量■介绍在编写写pl/sql程序时时,可可以定定义变变量和和常量量;在在pl/sql程序中中包括有有:①标量类类型(scalar)②复合类类型(composite)③参照类类型(reference)④lob(largeobject)主讲李李珩珩oracle数据库库pl/sql基基础知知识——定义义并使使用变变量■标量(scalar)-常用类类型在编编写写pl/sql块时时,如果果要要使使用用变变量量,需在在定定义义部部分分定定义义变变量量。。pl/sql中定定义义变变量量和和常常量量的的语语法法如如下下:identifier[constant]datatype[notnull][:=|defaultexpr]identifier:名称称constant:指定定常常量量.需要要指指定定它它的的初初始始植植,且其其值值是是不不能能改改变变的的datatype:数据据类类型型notnull:指定定变变量量值值不不能能为为null:=给变变量量或或是是常常量量指指定定初初始始植植default用于于指指定定初初始始植植expr:指定定初初始始植植的的pl/sql表达达式式,可是是文文本本值值、、其其它它变变量量、、函函数数等等举例例说说明明吧吧主讲讲李李珩珩oracle数据据库库pl/sql基基础础知知识识——定定义义并并使使用用变变量量■标量量定定义义的的案案例例①定义一个个变长字符符串v_enamevarchar2(10);②定义一个小小数范围围-9999.99~9999.99v_sal number(6,2);③定义一个小小数并给一一个初始植植为5.4:=是pl/sql的赋值号v_sal2 number(6,2):=5.4④定义一个日日期类型的的数据v_hiredate date;⑥定义一个布布尔变量,,不能为空空,初始植植为falsev_validbooleannotnulldefaultfalse;主讲李珩珩oracle数据库pl/sql基础知知识—定义义并使用变变量■标量(scalar)-使用标量在定义好变变量后,就就可以使用用这些变量量。这里需需要说明的的是pl/sql块为变量赋赋值不同于于其它的编编程语言,,需要在等等号前加冒冒号(:=)案例:以输输入员工号号,显示雇雇员姓名、、工资、个人所得税税(税率为0.03)为例。说明明变量的使使用,看看如何编编写.主讲李珩珩oracle数据库pl/sql基础知知识—定义义并使用变变量■标量(scalar)-使用%type类型对于上面的的pl/sql块有一个问问题:就是如果员员工的姓名名超过了5字符的话,,就会有错错误,为了了降低pl/sql程序的维护护工作量,,可以使用%type属性定义变变量,这样样它会按照照数据库列列来确定你你定义的变变量的类型型和长度,我们看看这这个怎么使使用:标识符名表表名.列名%type;主讲李珩珩oracle数据库pl/sql基础知知识—定义义并使用变变量■复合变量(composite)-介绍用于存放多多个值的变变量。常用用的包括这这:①pl/sql记录②pl/sql表主讲李珩珩oracle数据库pl/sql基础知识——定义并使用用变量■复合类型-pl/sql记录类似与高级语语言中的结构构体,需要注意的的是,当引用用pl/sql记录成员员时,必须要要加记录变量量作为前缀(记录变量.记录成员)如下:主讲李珩珩oracle数据库请编写一个过过程,该过程程可以接收一一个用户编号号,并显示该该用户的名字字,薪水,工工作岗位(注意:要求求用pl/sql记录实现)type自定义的pl/sql记录名isrecord(变量名变量量类型,变量名变量量类型,);//使用自定义的的pl/sql记录变量名自定定义的pl/sql记录名;pl/sql基础知识——定义并使用用变量■复合类型-pl/sql表(了解即可)相当于高级语语言中的数组组.但是是需要要注意意的是是在高高级语语言中中数组组的下下标不不能为为负数数,而而pl/sql是可可以为为负数数的,并且且表元元素的的下标标没有有限制制.实实例如如下declaretypeaa_table_typeistableofemp.ename%typeindexbybinary_integer;aa_tableaa_table_type;--定义一一个变变量:aa_table:类型beginselectenameintoaa_table(-1)fromempwhereempno=7788;dbms_output.put_line('员员工名名:'||aa_table(-1));end;说明::aa_table_type是是pl/sql表类类型emp.ename%type指指定了了表的的元素素的类类型和和长度度aa_table为为pl/sql表表变量量aa_table(0)则表表示下下标为为0的的元素素主讲李李珩珩oracle数据库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年遵义货运资格证考试题
- 2022年北京市初三一模物理试题汇编:功的原理
- 2025年四川货运从业资格证考试题库工具箱
- 2025年西安驾驶员货运从业资格证模拟考试
- 2025年晋中下载货运从业资格证模拟考试
- 2024-2025学年新教材高中地理第三章地球上的水第二节海水的性质讲义新人教版必修第一册
- 2024-2025学年高中生物单元排查强化六学案新人教版必修1
- 2025年度基础设施建设合同范本4篇
- 法院工作总结
- 吉林铁道职业技术学院《制造企业信息管理》2023-2024学年第二学期期末试卷
- 2024年高考作文素材积累之6个议论文人物素材及运用示例
- 小学数学试题命制培训
- 奥数培训班家长会
- 《边城》读书报告
- 模块01 中国古代史 历史小论文+观点论述题专项50练(解析版)备战2024年中考历史一轮复习(部编版)
- 老旧小区加装电梯方案
- 《“白山黑水”-东北三省》示范课课件(第2课时)
- 个人述职报告:职业发展与晋升规划课件
- 心力衰竭业务学习护理课件
- 《汽车发电机》课件
- 青少年网络安全教育课件
评论
0/150
提交评论