Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09

上传人:E**** 文档编号:89349678 上传时间:2019-05-23 格式:PPT 页数:40 大小:202KB
返回 下载 相关 举报
Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09_第1页
第1页 / 共40页
Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09_第2页
第2页 / 共40页
Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09_第3页
第3页 / 共40页
Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09_第4页
第4页 / 共40页
Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09》由会员分享,可在线阅读,更多相关《Oracle Database 10g基础教程(第二版) 教学课件 ppt 作者 978-7-302-15311-5 ch09(40页珍藏版)》请在金锄头文库上搜索。

1、第1页,第9章 PL/SQL基础,本章概述 本章要点 教学过程,第2页,本章概述,前面已经介绍了SQL语句如何与数据库交互。但是,仅有SQL语句是不够的,它无法完成许多编程操作。必须对SQL语句进行扩展,增强其功能。这种扩展就是PL/SQL语言。PL/SQL是一种编程语言,用户可以使用PL/SQL编写过程、函数、程序包、触发器并且存储这些代码。这些代码可以由指定的用户使用。PL/SQL对大小写不敏感,用户可以定制适合自己的编码标准。 本章全面介绍PL/SQL语言的内容。,第3页,本章要点,理解PL/SQL程序块的结构 如何在PL/SQL中声明变量和常量 理解SQL数据类型与PL/SQL数据类型

2、之间的差别 怎样使用游标技术在用户代码中将SQL与PL/SQL集成 在用户代码中如何使用循环结构和条件语句 怎样捕获和控制用户代码中的潜在错误,第4页,教学过程,9.1 概述 9.2 声明 9.3 PL/SQL数据类型 9.4 PL/SQL集合 9.5 游标 9.6 控制语句 9.7 错误处理,第5页,教学过程,9.1 概述 9.2 声明 9.3 PL/SQL数据类型 9.4 PL/SQL集合 9.5 游标 9.6 控制语句 9.7 错误处理,第6页,9.1 概述,PL/SQL是基于Ada编程语言的结构化编程语言,是由Oracle公司从版本6开始提供的专用于Oracle产品的数据库编程语言。用

3、户可以使用PL/SQL语言编写过程、函数、程序报、触发器等PL/SQL代码,并且把这些代码存储起来,以便由具有适当权限的数据库用户重新使用。 PL/SQL对大小写不敏感,因此用户应该选择符合自己的编码标准来描述性地规范自己的PL/SQL代码形式。 PL/SQL代码使用了程序块,利用模块化方式进行构建。,第7页,示例程序块,第8页,教学过程,9.1 概述 9.2 声明 9.3 PL/SQL数据类型 9.4 PL/SQL集合 9.5 游标 9.6 控制语句 9.7 错误处理,第9页,9.2 声明,前面已经介绍过,可以声明将要在PL/SQL代码中使用的变量和常量。声明变量时可以选择是否为变量赋值。但

4、是,常量必须初始化。之后,就可以在指定的PL/SQL代码块中使用这些变量和常量。,第10页,变量和常量,用户使用的所有变量和常量都必须在程序块中的声明部分定义。对于每一个变量,用户都必须规定名称和数据类型,以便在可执行部分为其赋值。 在何处为变量赋值是可以选择。既可以选择在可执行部分中为变量赋值,也可以选择在声明变量时同时为其赋值。如图9-4所示是这两种赋值方式。其中,第一个示例在可执行部分中为变量赋值,而在第二个示例中,声明变量时同时赋值。但是,这两种赋值的结果完全一样。第二个示例使用了关键字null。null关键字表示什么都不做。 常量声明与变量声明类似,但是也有一些区别。首先需要明白,常

5、量的值是不能改变的。因此,用户必须在声明常量时为其赋值,而且还必须在数据类型的左边使用constant关键字。,第11页,为变量和常量赋值,用户可以使用很多方法为变量(在程序块的声明部分和可执行部分)和常量(在声明部分)赋值。最常用的赋值方法是使用PL/SQL的赋值运算符(:=)。赋值运算符的语法格式如下: variable datatype := expression; - 在程序块的声明部分 variable := expression; - 在程序块的可执行部分 在程序块的声明部分初始化变量时,可以使用default关键字。使用default关键字为变量赋值,表示在可执行部分既可以直接引

6、用该变量的值,也可以重新为该变量赋值。 在声明变量时,可以为变量指定not null属性。not null属性表示该变量不允许空,必须为其赋予明确的值。,第12页,可视性和作用域,当声明变量和常量时,有一些控制用户声明的作用域和可视性的规则。作用域是用户能够引用变量名称标识符的程序块。只有用户处于可以使用非限定名称引用标识符的程序域时,标识符才是可视的。也就是说,如果在该所用域中,没有必要使用定义标识符的程序块名称作为标识符的前缀,那么该标识符是可视的。 在单独的程序块中,整个程序块都是在声明部分定义的标识符的作用域,标识符都是可视的。 在嵌套程序块中,父块本身和任何嵌套块都是在父块中定义的标

7、识符的作用域,这些标识符都是可视的。在子块声明中定义的标识符只有在子块本身中才处于其作用域,才是可视的。,第13页,定义不确定内容,前面的许多示例都引用了null关键字。null关键字表示缺少、不可知或不适用等含义。从本质上来讲,null关键字表示没有内容。 在PL/SQL程序块中,如果引用某个已经声明的变量,且没有为该变量赋值,那么该变量的值就是null。也就是说,null通常会赋予在声明时没有赋值的变量。 如图9-8所示的示例声明了4个变量。但是,这4个变量都会产生相同的结果:具有null值的varchar2变量。,第14页,使用%type和%rowtype,可以使用%type和%rowt

8、ype来声明变量,而不必指定特定的数据类型。这两个属性提供了这种方式:在声明变量时,不指定变量的数据类型,而由表/视图列或PL/SQL程序包变量来定义变量的数据类型。 %type和%rowtype可以用于不同的情况。 当用户声明单独的变量而不是记录时可以使用%type。 当用户声明表示表、视图或游标的完整行的记录变量时可以使用%rowtype。,第15页,教学过程,9.1 概述 9.2 声明 9.3 PL/SQL数据类型 9.4 PL/SQL集合 9.5 游标 9.6 控制语句 9.7 错误处理,第16页,9.3 PL/SQL数据类型,PL/SQL数据类型与SQL数据类型既有相同之处,也有不同

9、之处。PL/SQL数据类型可以分为标量类型、引用类型、复合类型、LOB类型。标量类型是只能存储单值的数据类型,它又可以进一步划分为字符类型、数值类型、逻辑类型、日期和时间类型。 本节重点介绍PL/SQL标量数据类型的特点。,第17页,字符数据类型,PL/SQL字符数据类型可以包含单个字符,也可以包含长度在32K以内的字符串。这些类型可以存储字母、数字和二进制数据,也可以存储数据库字符集所支持的所有字符。在使用这些类型定义变量时,一般都使用整数来定义其长度,单位是字节。 如表9-1所示列出了PL/SQL字符数据类型的名称和特点。需要注意的是,虽然varchar2的两种子类型,即varchar和s

10、tring,能够和varchar2替换使用,但是Oracle还是建议使用varchar2。因为在为未来的某个时候,varchar可能会变成与varchar2不同的数据类型。,第18页,数值数据类型,在Oracle Database 10g系统中,常用的数值类型包括binary_double、binary_float、binary_integer、number、pls_integer。 binary_double是Oracle Database 10g系统新引入的一种数值类型,它是IEEE-754标准的双精度浮点模型。 binary_float也是Oracle Database 10g系统新引入

11、的一种数值类型,它是一种单精度类型。 binary_integer数据类型存储数值的范围是2147483647+2147483647。 PL/SQL中的number类型与数据库中的number类型含义相同。这种类型可以存储浮点值和整数值。 pls_integer是-231231之间有符号的整数,提供了从-21474836482147483648的范围。,第19页,逻辑数据类型,在PL/SQL程序块中可以使用boolean数据类型,即逻辑数据类型。该数据类型不能用于SQL中数据库的列。 boolean变量的值可以是true、false和null,它能够作为条件语句的单一参数。需要注意的是,在使用

12、逻辑数据类型赋值时,不能使用引号。在如图9-12所示的示例中有两个示例。在第一个示例中,由于逻辑值true有引号,所以出现了错误。第二个示例将逻辑值true直接赋予逻辑变量,所以赋值成功。,第20页,日期和时间类型,PL/SQL的日期和时间类型包括date类型、timestamp类型和interval类型。这3种日期和时间类型与SQL相应的类型具有相同的名称和含义。 PL/SQL的date类型可以存储世纪、年、月、日、时、分和秒。其中,秒不能带小数。可以使用内置的to_date()和to_char()函数在字符串和date类型之间进行相互转换。使用这些内置函数,通过调整日期格式,可以使其包含或

13、不包含日期或时间的值,也可以使其使用12时制或24时制。 PL/SQL的timestamp类型用于描述时戳,有3种不同的类型,即timestamp、timestamp with time zone和timestamp with local time zone类型。 PL/SQL有两种类型的interval,即interval year to month和interval day to second。这两种类型的差别主要在于计算的精度。,第21页,教学过程,9.1 概述 9.2 声明 9.3 PL/SQL数据类型 9.4 PL/SQL集合 9.5 游标 9.6 控制语句 9.7 错误处理,第22

14、页,9.4 PL/SQL集合,大多数的编程语言提供了声明集合对象的功能,PL/SQL也是如此。PL/SQL提供了 记录 PL/SQL表 VARRAY 嵌套表 下面详细介绍这些集合对象的特点。,第23页,记录,在PL/SQL中,可以声明一种作为相关变量集合使用的记录类型。这些变量的集合称为记录。可以采用与建立表时大体相同的方式,在记录中存储一对多的标量属性。记录最早是在Oracle 7中引入的。随着Oracle数据库的不断升级,记录的功能也变得越来越强大。Oracle 8提供了对象类型,但是在Oracle 8系统中,对象的功能很有限。Oracle Database 10g改变了这种状况,对象类型

15、支持用户自定义的结构体。 当在PL/SQL中使用记录时,首先需要定义记录的结构,然后可以设置记录类型的变量。这与通常定义变量的方式不同,因为大多数标量类型或%type/%rowtype类型都已经定义了。当用户声明了记录类型的变量之后,就可以为记录变量的单独属性赋值。 定义记录类型可以使用如下语法格式: type redord_name is record ( field_declaration, );,第24页,PL/SQL表,PL/SQL表,有时也称为索引表,是可以在PL/SQL例程中使用、能够模仿数组的非永久表。 用户可以定义一个PL/SQL表类型,然后声明这种类型的变量,接下来就可以将记

16、录增加到用户的PL/SQL表中,并且采用与引用数组元素大体相同的方式引用这些记录。这些表是一维数组,不要将它们与Oracle表对象混淆。如图9-15所示是PL/SQL表的用法。,第25页,VARRAY和嵌套表,自从Oracle引入了面向对象技术之后,所强调的特征之一就是能够在数据库表中存储对象集合。这两个对象集合就是VARRAY和嵌套表。 VARRAY是能够在表列中存储的PL/SQL集合。当建立VARRAY时,必须为其提供最大的规模。当用户开始向VARRAY中添加元素之后,它就会消耗空间。这些集合是密集对象,意味着没有办法删除其中包含的独立元素。为了引用VARRAY元素,需要使用带有VARRAY变量名称的标准语法。 嵌套表也是集合对象。嵌套表与索引表非常类似。它们之间最主要的区别在于,嵌套表可以存储在数据库的列中,而索引表不行。使用嵌套表非常类似于在用户数据库的列中存储一个记录数组。,第26页,教学过程,9.1 概述 9.2 声明 9.3 PL/SQL数据类型 9.4 PL/SQL集合 9.5 游标 9.6 控制语句 9.7 错误处理,第27页,9.5 游标,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号