Oracle9i + PL_SQL学习笔记

索引表

索引表(index-by tables)有点类似数据库表,它由两列组成(key和value)。它的Key值类型是binary_integer,value类型就是在定义中指定的类型。和数据库表不同的是它是保存在内存中的表。

定义索引表:

Type type_name is table of element_type [not null]

index by binary_integer;

type_name:定义的类型的名称,使用它声明索引表变量。

element_type:声明索引表中的value的数据类型。

not null是个可选项,如果限定了not null,则不能插入一个null值

index by binary_integer被用来标记索引表的,如果没有它则默认是嵌套表。

type my_table is table of varchar2(30) index by binary_integer;

V_mt my_table;

索引表的value值可以使标量类型也可以使记录类型。

type mytable is table of treader.%ROWTYPE index of binary_integer;

向索引表中插入数据

定义好类型和变量后,就可以用mytable[key]来引用索引表里的单个元素了。mytable[key]:=value.

嵌套表

嵌套表和索引表类似,不同之处是嵌套表可以保存到数据库中,而索引表不可以。

声明:type type_name is table of element_type [not null]

嵌套赋值:

declare

type test is table of varchar2(10);

mt test:=test('fan','hao');

begin

dbms_output.put_line(mt(1)||'' ||mt(2));

end;

/