首页 Oracle数据库第5讲

Oracle数据库第5讲

举报
开通vip

Oracle数据库第5讲oracle第5讲1.pl/sql的介绍2.pl/sql的基础主讲李珩oracle数据库pl/sql的介绍■pl/sql是什么pl/sql(procedurallanguage/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。■学习必要性[图]①提高应用程序的运行性能②模块化的设计思想[分页的过程,订单的过程,转账的过程..]③减少网络传输量④提高安全性■缺点移植性不好.主...

Oracle数据库第5讲
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可以做什么■简单分类|-----过程(存储过程)||----- 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 块(编程)-------||-----触发器||-----包分分类吧主讲李珩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基础知识—包③如何调用包的过程或是函数当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的包,还需要在包名前加方案名.如:特别说明:包是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_salnumber(6,2);③定义一个小数并给一个初始植为5.4:=是pl/sql的赋值号v_sal2number(6,2):=5.4④定义一个日期类型的数据v_hiredatedate;⑥定义一个布尔变量,不能为空,初始植为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数据库pl/sql基础知识—定义并使用变量■参照变量-介绍参照变量是指用于存放数值指针的变量.通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用的空间。在编写pl/sql程序时,可以使用游标变量(refcursor)和对象类型变量,(refobj_type)两种参照变量类型主讲李珩oracle数据库pl/sql基础知识—定义并使用变量■参照变量-refcursor游标变量使用游标时,当定义游标时不需要指定相应的select语句,但是当使用游标时(open时)需要指定select语句,这样一个游标就与一个select语句结合了。实例如下:①请使用pl/sql编写一个过程,可以输入部门号,并显示该部门所有员工姓名和他的工资.②在①基础上,如果某个员工的工资低于200元,就增加100元.主讲李珩oracle数据库1.定义游标:type自定义游标名isrefcursor;变量名自定义游标名2.打开游标:open游标变量forselect语句;3.取出当前游标指向的行:fetch游标变量into其他变量;4.判断游标是否指向记录最后:游标变量%notfound5.关闭游标:close游标变量;演讲完毕,谢谢观看!
本文档为【Oracle数据库第5讲】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
言言无悔一生
暂无简介~
格式:ppt
大小:586KB
软件:PowerPoint
页数:29
分类:
上传时间:2022-01-21
浏览量:0