PL/SQL语言的集合类似于数组,是管理多行数据必须的结构体。集合就是列表,可能有序,也可能无
序。PL/SQL的集合类型有:联合数组、嵌套表和可变数组三种。
1、联合数组
联合数组类似于C语言中的数组。
(1)语法格式如下:
type typeName is table of arrayType index by binary_integer;
其中,typeName表示新类型的类型名,arrowType表示要定义的联合数组的类型。
假设有一个表t_module(name varchar(20)),那么我们可以针对其name字段建立如下联合数组:
type moduleName is table of t_module.name%type index by binary_integer;
(2)元素赋值
示例代码如下:
declare type NameArray is table of varchar(20) index by binary_integer; /*定义联合数组NameArrow*/ na NameArray; /*声明联合数组NameArrow的一个变量*/ begin na(1) := 'Hello'; /*给联合数组赋值*/ na(2) := 'World'; /*给联合数组赋值*/ na(5) := 'Oracle'; /*给联合数组赋值*/ dbms_output.put_line(na(1) || na(2)); end;
注意:
a.联合数组中的元素不是按特定顺序排列的,元素的下标也是可以无序的,所以nameArrow(-100) :=
'Hello'也是可以的。
b.index的数据类型是binary_integer类型,所以index的范围为-214483647~+214483647。
c.当调用不存在的元素时将会出错。
2、嵌套表
嵌套表的声明和联合数组的声明十分类似。语法格式如下:
type typeName is table of arrayType [not null]
嵌套表的声明与联合数组的唯一不同是没有index by binary_integer子句。
(1)嵌套表的初始化
嵌套表的初始化和联合数组的初始化是不同的。在声明了联合数组之后,再声明一个联合数组对应的
变量,如果此时没有给该变量赋值,那么该变量对应的联合数组就是一个空的,在以后的语句中还可以
给该联合数组添加元素;而如果在声明了嵌套表变量时没有初始化,则该嵌套表将自动初始化为null,
并且是只读的。如果在后续代码中继续向该嵌套表中添加元素,就会报错,但是可以修改已经存在的元
素的值。
以下是一个嵌套表的初始化示例:
declare type NameArray is table of varchar(20); na NameArray := NameArray('ZhangSan', 'LiSi', 'WangWu'); /*在声明的时候即初始化该嵌套表 */ begin for nameIndex in 1..3 loop dbms_output.put_line(na(nameIndex)); end loop; end;
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 变量
, index
, 类型
, 元素
, 联合
, oracle数组类型
, table嵌套
, Table嵌套Table
, 嵌套表
联合数组
,以便于您获取更多的相关知识。