表类型有两个部分:主键部分与表类容部分。
可以根据表的主键来搜索表的内容(数据)。表的数据可以不一样。
创建表类型的格式:
Type 表类型名 is table of(
………..
)
INDEX BY BINARY_INTEGER;
表类型变量 表类型名;
或者:
Type 表类型命 is table of 表名%rowtype;
表类型可以存放复合的数据类型,通过索引来找到需要的数据,相关方法:
EXISTS(n):用于判断PL/SQL表中指定的元素是否存在。
COUNT: 返回一个PL/SQL表当前包含的元素的数量。
FIRST: 在PL/SQL表中返回第一个索引编号
LAST: 在PL/SQL表中返回最后一个索引编号
PRIOR(N):在PL/SQL表中返回索引n之前的索引编号。
NEXT(N):在PL/SQL表中返回索引n之后的索引编号。
EXTEND仅在PL/SQL表后添加一个NULL元素。
EXTEND( n)向PL/SQL表后面添加n个元素。
EXTEND( n,i)向PL/SQL表后面添加n个i元素的副本。
TRIM把一个元素从一个PL/SQ表的最后移开。
TRIM(n)把元素n从一个PL/SQ表的最后移开。
DELETE把所有的元素从PL/SQ表中移开。
DELETE(n)把第n 个元素从PL/SQ表中移开。
DELETE(m,n)从PL/SQ表中移开在范围(m,n)中的所有元素。
举例:
Set serveroutput on
declare
type person_tabel_type is table of person%rowtype index by binary_integer;
my_type person_tabel;
v_count number(4) :=95003;
begin
for i 95001..v_count loop
select * into my_type(i)
from person
where number=I;
end loop;
for i in my_type.first... my_type.last loop
dbms_output_print_line(my_type(i).username);
dbms_output_print_line(my_type(i).sex);
dbms_output_print_line(my_type(i).age);
dbms_output_print_line(my_type(i).number);
end loop;
end;
/