PL/SQL表
pl/sql表只有两列,其中第一列为序号列为INTEGER类型,第二列为用户自定义列.
定义:TYPE <类型名> IS TABLE OF <列的类型> [NOT NULL] INDEX
BY BINARY_INTEGER;
<列的类型>可以为Oracle的数据类行以及用户自定义类型;
属性方法:
.count --返回pl/sql表的总行数
.delect --删除pl/sql表的所有内容
.delect(行数) --删除pl/sql表的指定的行
.delct(开始行,结束行) --删除pl/sql表的多行
.first --返回表的第一个INDEX;
.next(行数) --这个行数的下一条的INDEX;
.last --返回表的最后一个INDEX;
使用
示例:
DECLARE
TYPE mytable IS
TABLE OF VARCHAR2(20) index by binary_integer; --定义一个名为mytable的PL/sql表类型;
cursor c_1
is select ename from emp;
n number:=1;
tab_1 mytable; --为mytable类型实例化一个tab_1对象;
BEGIN
for i in c_1
loop
tab_1(n):=i.ename; --将得到的值输入pl/sql表
n:=n+1;
end loop;
n:=1;
tab_1.delete(&要删除的行数); --删除pl/sql表的指定行
for i in tab_1.first..tab_1.count
loop
dbms_output.put_line(n||' '||tab_1(n)); --打印pl/sql表的内容
n:=tab_1.next(n);
end loop;
EXCEPTION
WHEN NO_DATA_FOUND THEN
--由于删除了一行,会发生异常,下面语句可以接着删除的行后显示
for i in n..tab_1.count+1
loop
dbms_output.put_line(n||' '||tab_1(n));
n:=tab_1.next(n);
end loop;
END;