Oracle pl/sql编程 8---复合变量之记录表类型

来源:互联网 时间:1970-01-01

复合变量之记录表类型
记录表类型是对记录类型的扩张,它可以处理多个记录或多行数据,使用记录表类型和记录类型一样想,必须先创建一个记录表类型:
type talbe_name is table of date_type [not null] index by binary_integer;
因为记录类型不会存储在数据库中,所以data_type可以是任何合法的pl/sql数据类型。关键字index by binary_integer指示系统创建一个主键索引,以引用记录表变量中的特定行。

 set serveroutput on; declare --创建一个记录表类型 type emp_table is table of emp%rowtype index by binary_integer; emp_table_resoult emp_table; begin --将查到的结果放到emp_table_resoult这个记录表类型变量中 select * into emp_table_resoult(-1) from emp where ename='SMITH'; --将查到的第一条数据的姓名打印出来 dbms_output.put_line(emp_table_resoult(-1).SAL); end;

之前有说过记录表类型相当于其他语言中的数组,那么使用的时候自然要指定下标,不同的是它的下标可以任意指定没有限制,而且下标可以为负数

记录表类型提供的方法count获得该变量中的记录数delete并传递一个索引号可以将对应的记录删除
 set serveroutput on; declare type table_text is table of varchar2(20) index by binary_integer ; text table_text; begin text(1):='第一行记录'; text(2):='第二行记录'; text(3):='第三行记录'; text(4):='第四行记录'; text(5):='第五行记录'; --调用count方法获得记录表类型数据中的记录数 dbms_output.put_line('一开始的记录数'||text.count); --调用delete方法将下标对应的数据删除 text.delete(1); dbms_output.put_line('删除一条后的记录数'||text.count); --调用delete方法不传参数将记录表数据清空 text.delete; dbms_output.put_line('全部删除后的记录数'||text.count); end;

first方法返回记录表中的‘第一行’或者最小的索引last方法返回记录表中的最后一条索引next方法:返回下一个索引,使用的时候要传递一个索引值,这个方法将返回下一个较大的索引,如果传递的是最后一个索引,则next方法将返回null

 set serveroutput on; declare type table_text is table of varchar2(20) index by binary_integer ; text table_text; index_num binary_integer; begin text(1):='索引为1的行'; text(2):='索引为2的行'; text(3):='索引为3的行'; text(4):='索引为4的行'; text(5):='索引为5的行'; text(9):='索引为9的行'; text(20):='索引为20的行'; --获得最小的索引 index_num:=text.first; --遍历记录表对象 loop exit when index_num is null; dbms_output.put_line(index_num||':'||text(index_num)); --获取下一行的索引值 index_num:=text.next(index_num); end loop; end;





相关阅读:
Top