PL/SQL 学习笔记 二

复合变量

指用于存放多个值的变量。当定义复合变量时,必须要使用PL/SQL的复合数据类型。PL/SQL包括PL/SQL记录、PL/SQL表、嵌套表及VARRAY等四种复合数据类型。

1.PL/SQL记录

PL/SQL记录类似于高级语言中的结构,每个PL/SQL记录一般都包含多个成员。当使用PL/SQL记录时,首先需要在定义部分定义记录类型和记录变量,然后在执行部分引用该记录变量。需要注意,当引用记录成员时,必须要加记录变量作为前缀(记录变量.记录成员)。

示例如下:

如例所示,emp_record_type是PL/SQL记录类型,并且该PL/SQL记录类型包含了三个成员(name,salary,title);emp_record是记录变量;emp_record.name 则表示引用记录变量emp_record的成员。

2.PL/SQL表

PL/SQL表类似于高级语言中的数组。需要注意,PL/SQL表与高级语言的数组有所区别,高级语言数组的下标不能为负,但PL/SQL表的下标可以为负值;高级语言数组的元素个数有限制,而PL/SQL表的元素个数没有限制,并且其下标没有上下限。当使用PL/SQL表时,必须首先在定义部分定义PL/SQL表类型和PL/SQL表变量,然后在执行部分中引用该PL/SQL表变量。

示例如下:

如例所示,ename_table_type为PL/SQL表类型;emp.ename%type指定了PL/SQL表元素的数据类型和长度;ename_table为PL/SQL表变量,

ename_table(-1)则表示下标为-1的元素。

3.嵌套表

嵌套表类似于高级语言中的数组。需要注意,高级语言数组和嵌套表的下标都不能为负值;高级语言的元素个数是有限制的,而嵌套表的元素个数是没有限制的。嵌套表和PL/SQL表非常类似,但嵌套表可以作为表列的数据类型,而PL/SQL表不能作为表列的数据类型。当在表列中使用嵌套时,必须首先使用create type语句建立嵌套表类型。示例如下:

如例所示,对象类型emp_type用于存储雇员信息,而emp_array是基于emp_type的嵌套表类型,它可以用于存储多个雇员的信息。当建立嵌套表类型之后,就可以在表列或对象属性中将其作为用户自定义数据类型来引用。但需要注意,当使用嵌套表类型做表列时,必须要为其指定专门的存储表。示例如下:

4.VARRAY

VARRAY类似于嵌套表,它可以作为表列和对象类型属性的数据类型。但需要注意,嵌套表的元素个数没有限制,而VARRAY的元素个数是有限制的。当使用VARRAY时,必须首先建立VARRAY类型。示例如下:

 

如例所示,对象类型article_type用于存储文章信息,而article_array则用于存储多篇文章的信息,并且最多可以存储20篇文章。当建立VARRAY类型之后,可以在表列或对象属性中将其作为用户自定义数据类型来引用。示例如下:

注意,嵌套表列数据需要存储在专门的存储表中,而VARRAY数据则与其他列数据一起存放在表段中。

posted on 2011-06-30 17:21  ~~奔跑~~  阅读(1369)  评论(0编辑  收藏  举报

导航