PL/SQL索引表

PL/SQL集合类型是类似于高级语言数组的一种符合数据类型,集合类型包括索引表(PL/SQL 表)、嵌套表(Nested Table)和变长数组(VARRAY)3种类型。

1.索引表

索引表也成为PL/SQL表,用于处理PL/SQL数组的数据类型。但是索引表与高级语言的数组使用区别的:高级语言数组的元素个数是有限制的,并且下标不能为负值;而索引表的元素个数没有限制,并且下标可以为负值。

定义索引表的语法如下:

TYPE type_name IS TABLE OF element_type
[NOT NULL] INDEX BY key_type;
identifier type_name;

其中各参数的含义如下:

type_name          用于指定用户自定义数据类型的名称

element_type     用于指定索引表元素的数据类型

NOT NULL          表示不允许引用NULL元素

key_type              用于指定索引表元素下标的数据类型

identifier              用于定义索引表变量

1.1 在索引表中使用BINARY_INTEGER和PLS_INTEGER

下面这个例子首先定义一个索引表类型,其中指定索引表下标的数据类型为BINARY_INTEGER,然后定义一个索引表类型的变量用于存储EMP表中ENAME的列值。

示例如下:

SQL> DECLARE
TYPE ename_table_type IS TABLE OF emp.name%TYPE
INDEX BY BINARY_INTEGER;--指定索引表元素下标的数据类型为BINARY_INTEGER
ename_table ename_table_type;
Begin
Select ename Into ename_table(-1) From emp Where empno=7788;
DBMS_OUTPUT.PUTLINE('雇员号为7788的雇员名为'||ename_table(-1));
End;

1.2 在索引表中使用VARCHAR2

在定义索引表时,不仅允许使用BINARY_INTEGER和PLS_INTEGER作为元素下标的数据类型,也允许使用VARCHAR2下标,可以在元素下标和元素值之间建立关联,

示例如下:

SQL> DECLARE
TYPE area_table_type IS TABLE OF emp.name%TYPE INDEX BY VARCHAR2(10);--指定索引表元素下标的数据类型为
area_table ename_table_type;
Begin
area_table('北京') :=1;
area_table('上海') :=2;
area_table('苏州') :=3;
End;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值