java数据库技术PPT电子课件教案-第4章 PLSQL.ppt_第1页
java数据库技术PPT电子课件教案-第4章 PLSQL.ppt_第2页
java数据库技术PPT电子课件教案-第4章 PLSQL.ppt_第3页
java数据库技术PPT电子课件教案-第4章 PLSQL.ppt_第4页
java数据库技术PPT电子课件教案-第4章 PLSQL.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 pl/sql,pl/sql(procedural language/sql)是oracle对标准数据库sql语言的扩展。在pl/sql中,不仅可以使用sql语句,而且还可以在pl/sql中定义变量和常量、使用条件分支和循环控制语句、可以进行异常处理、可以使用游标进行数据操作等。在任何运行oracle的平台中,都可以使用pl/sql进行应用程序的开发。,4.1 pl/sql简介,pl/sql作为一种可以运行在任何oracle平台中的较为复杂的程序设计语言,在实际的开发应用中得到了广泛的应用。这一节将对pl/sql做一个简单的介绍,并结合一个实例讲解为什么要在程序应用中使用pl/sql。,4.1.1 pl/sql的含义,pl/sql的英文全称为procedural language/sql,它是oracle对标准数据库sql语言的扩展,它可以运行在任何的oracle开发环境中。oracle公司已经将pl/sql语言集成到oracle的服务器中,也可以在由其他的第三方提供的工具中使用pl/sql。,4.1.1 pl/sql的含义,pl/sql语言是一种比较复杂的数据库程序设计语言,它将第四代语言(如sql)的灵活性与第三代语言(如c、cobol、c+、java等)的过程性结构结合在一起,很好的融合了sql语言中强大的数据库操作性以及程序设计语言中的过程结构。因此,pl/sql语言的功能强大,可以用它来解决数据库应用中复杂的应用程序。,4.1.1 pl/sql的含义,作为对sql语言的扩展,pl/sql语言增加了许多程序设计语言中的过程结构,主要包括以下几个方面的扩展。 变量:例如,变量声明、变量初始化等。 数据类型:例如,标量类型、复合类型、引用类型、对象类型、用户自定义类型等。,4.1.1 pl/sql的含义,结构控制语句:例如,条件语句if-else-then、case和循环语句loop、while等。 过程和函数:在数据库中以编译好的形式存储,供其他的语句块调用。 异常处理:用来处理程序运行时出现的错误,将程序逻辑处理代码与错误处理代码分离。,4.1.2 使用pl/sql的原因,在实际的应用中,有些时候需要处理的业务逻辑可能会比较复杂,pl/sql用来处理这些复杂的数据操作。例如,一家企业要对某一名员工的职位进行修改,如果这个员工不存在,就向员工信息表中插入一条该员工的记录;如果这个员工存在,就在员工信息表中修改这名员工的职位信息。对于这个问题,如果仅仅使用sql语言是无法来完成的,因为在sql语言中,并没有提供用于判断的语句命令。,4.1.2 使用pl/sql的原因,pl/sql语言是集成在oracle服务器中,因此在oracle数据库中使用pl/sql语言执行相应的数据库操作,其执行的速度会更快,但是也正是由于pl/sql语言是集成在oracle服务器中的,所以很难将它从一种数据库移植到另一种数据库中。例如,从移植oracle数据库移植到mysql数据库获得其他的数据库。,4.1.2 使用pl/sql的原因,pl/sql的优点如下。 (1)pl/sql是一种高性能的基于事务处理的语言,支持oracle所有数据处理命令。通过使用pl/sql程序单元处理sql的数据定义和数据控制元素。 (2)pl/sql支持sql的全部数据类型和sql的所有函数,同时支持oracle的所有对象类型 (3)pl/sql代码块可以被命名和存储在oracle服务器中,具有很好的可重用性。,4.1.2 使用pl/sql的原因,(4)pl/sql程序具有安全性安全性。可以授权或撤销数据库其他用户访问pl/sql程序的能力。 (5)pl/sql代码可以使用任何ascii文本编辑器编写,所以对任何支持oracle的操作系统都是非常便利的。,4.1.2 使用pl/sql的原因,对于sql,oracle必须在同一时间处理每一条sql语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。pl/sql是以整个语句块发给服务器,这就降低了网络拥挤。,4.2 pl/sql基础,pl/sql语言是作为一种高级的数据库程序设计语言,在编写时也应该遵循一定的编写规范。良好的程序编写规范不仅可以让其程序更容易阅读和理解,而且也有利于以后程序代码的维护。这一节就来介绍编写pl/sql语言中常用的一些编程规范,这些规范是pl/sql的基础。语句块是pl/sql语句块的基本单元。pl/sql语句块就是由语句块构成的。语句块之间可以相互嵌套。pl/sql语句块中几种常用的块结构,包括基本语句块、匿名语句块、命名语句块、子程序和触发器。,4.2.1 pl/sql中的注释,在4.1.2小节中看到,在pl/sql中有中文注释。pl/sql的注释用“-”符号来表示,“-”符号后面写注释的内容,多行注释用“/*”和“*/”。 在实际应用中,无论用任何一种程序设计语言编写的代码都不能没有注释。在pl/sql的代码中,一般需要在三个地方为其添加注释。 每一个pl/sql语句块或者过程的开始部分,用于说明这个pl/sql语句块或者过程是用来干什么的。,4.2.1 pl/sql中的注释,每一个变量声明的后面,用于说明该变量所表示的意义。 pl/sql语句块或者过程中的主要业务逻辑的处理部分,用于说明该段处理程序的作用以及可能产生的结果。,4.2.2 标识符命名规范,作为程序设计语言,在实际应用中都会使用标识符命名变量、常量等,在pl/sql语言中,标识符名称字符长度最大不能超过30个字符,并且需要以字母开头。要为变量起有意义的名字。也就是说,通过变量名可以让阅读程序的人知道这个变量是用来做什么的。例如,如果要定义一个员工编号的变量,那么empid量名就要比c 的变量名更有意义。,4.2.3 大小写规范,虽然pl/sql语言不区分大小写,但是在程序中适当区分字母的大小还是有利于程序的可读性。因此在使用pl/sql语言时字母的大小写可以遵循以下的规则。 pl/sql语言关键字需要大写,如declar、begin等。 sql语言中的关键字需要大写,如select、where、insert、update等。,4.2.3 大小写规范,sql语言中内置函数需要大写,如round()、to_date()、 length()等。 数据类型需要大写,如int、varchar2等。 数据库对象使用小写字母,如teacher、student等。 变量和参数使用小写字母,如v_stuid、stul_record等。,4.2.4 代码缩进格式,代码格式。为了使程序更容易阅读和理解,一般在一段代码中都会使用制表符(“tab”键)对代码进行缩进。 在pl/sql语言中,如果使用条件语句和循环语句,更要注意代码的缩进,否则会影响对程序的阅读和理解。,4.2.5 pl/sql的基本语句块,pl/sql语言中的基本语句块包含3部分,定义部分、执行部分和异常处理部分。在这三个部分中,只有执行部分是必需的,而定义部分和异常处理部分是可选的。,4.2.6 匿名语句块,匿名语句块,就是没有名字的语句块。匿名语句块只能执行一次,一般都是动态生成的,它既可以嵌入到像proc/c+这样的程序中,也可以由客户端程序产生。,4.2.7 命名语句块,命名语句块,就是有名字的pl/sql语句块。它与匿名语句块用法基本相同,也只能执行一次,一般都是动态生成的。 如果要为匿名语句块加入相应的名字,可以使用“”对其进行标记,代码如下。,4.2.7 命名语句块, 这一行的代码就是给pl/sql语句块命名的,表示这个pl/sql语句块的名称为insert_emp。,4.2.8 触发器,触发器可以认为是一种特殊类型的存储过程,它是由数据库管理系统隐式执行的。在触发器中可以包含sql语句和pl/sql语句,在定义触发器时,还需要指定触发事件,常用的触发事件主要是数据操纵语言dml(如insert、update和delete)。可以使用关键字create or replace trigger定义一个触发器。其中,关键字or replace是可选的。,4.2.9 数据类型之标量类型,标量变量,是指只能存储单个数值的变量。当定义一个标量变量时,就需要为其指定标量数据类型。标量数据类型主要包括数字类型、字符类型、布尔类型、日期时间类型等,每种标量类型又对应包含有相应的子类型。子类型可以认为是类型的别名,一般可以从两个方面考虑使用子类型,一个是考虑与其他数据库的数据类型相兼容,另外一个是从代码的可读性考虑。标量类型如下:,4.2.9 数据类型之标量类型,数字类型,数字类型是用来存储整数或浮点数的,它包括以下几种基本的类型,分别是number、binary_integre、pls_intergre、binary_float和binary_double类型。其中,number类型是用来定义整数或者是浮点数的,binary_integre和pls_intergre类型是用来定义整数的。,4.2.9 数据类型之标量类型,字符类型是用来存储字符数据或者字符串的。字符类型主要包括char、varchar2、nchar、nvarchar2、long、long raw和raw。,4.2.9 数据类型之标量类型,布尔类型是用来定义布尔变量的。变量值包括true、false和null。布尔变量主要是用来进行逻辑操作的,在布尔变量中只允许使用逻辑操作符。 日期时间类型主要是用来定义日期时间数据的,主要包括date、timestamp和interval三种类型。,4.2.10 p数据类型之复合类型,复合变量,是指可以存储多个数值的变量。当定义一个复合变量时,就需要为其指定复合数据类型。复合类型的变量中可以包含一个标量变量,也可以包含多个标量变量。复合类型主要包括记录、表、嵌套表和变长数组(varray)四种类型。,4.2.10 数据类型之复合类型,在pl/sql中,变长数组可以存储固定数量的元素,在定义时需要为其指定变长数组中元素的最大个数,在运行时可以改变其大小,但是其改变的大小不能超过定义变长数组时指定的上限(即在定义变长数组时指定的最大个数)。与嵌套表相类似,它也可以作为数据库的表中数据列的数据类型。,4.2.11 数据类型转换,在pl/sql中,可以对不同的标量数据类型进行转换。标量数据类型之间的相互转换主要包括两种,一种是隐式的数据类型转换,一种是显式的数据类型转换。,4.2.11 pl/sql的数据类型转换,1. 隐式数据类型转换 pl/sql中,可以对数字和字符、字符和日期以及时间类型之间进行类型转换,这种转换都是由pl/sql自动完成的,是隐式的数据类型转换。,4.2.11 数据类型转换,2. 显示数据类型转换 pl/sql中,也可以对数据类型进行显式的类型转换,这时需要用到sql语句中内置的转换函数。oracle中内置的转换函数主要包括to_char()、to_date()、to_number()、rowtohex()、hextorawd()等。表4.1列出了sql内置函数及其这些函数可以转换的类型。,4.2.11 数据类型转换,sql中的内容函数可以转换的类型如下: to_char(number|date) number、date to_date(char) character to_number(char) character rowtohex(raw) row,4.2.11 数据类型转换,hextorawd(char) character chartorowid(char) character ro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论