定义记录表类型的语法如下:
TYPE table_name IS TABLE OF element_type [NOT NULL] INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARRAY2];
记录表中的方法:
- EXISTS(n):如果集合的第n个成员存在,则返回true
- COUNT:返回已经分配了存储空间即赋值了的成员数量
- FIRST:返回成员的最低下标值
- LAST:返回成员的最高下标值
- PRIOR(n):返回下标为n的成员的前一个成员的下标。如果没有则返回NULL
- NEXT(N):返回下标为n的成员的后一个成员的下标。如果没有则返回NULL
- TRIM:删除末尾一个成员
- TRIM(n) :删除末尾n个成员
- DELETE:删除所有成员
- DELETE(n) :删除第n个成员
- DELETE(m, n) :删除从n到m的成员
- EXTEND:添加一个null成员
- EXTEND(n):添加n个null成员
- EXTEND(n,i):添加n个成员,其值与第i个成员相同
- LIMIT:返回在varray类型变量中出现的最高下标值
例1:
declare type emp_table_type is table of emp%rowtype index by binary_integer; emp_table emp_table_type; begin select * bulk collect into emp_table from emp where deptno=&dno; for i in 1..emp_table.count loop dbms_output.put_line('雇员名: '||emp_table(i).ename||',工资: '||emp_table(i).sal); end loop; end;
按一维数组使用表:
DECLARE --定义记录表数据类型 TYPE reg_table_type IS TABLE OF varchar2(25) INDEX BY BINARY_INTEGER; --声明记录表数据类型的变量 v_reg_table REG_TABLE_TYPE; BEGIN v_reg_table(1) := 'Europe'; v_reg_table(2) := 'Americas'; v_reg_table(3) := 'Asia'; v_reg_table(4) := 'Middle East and Africa'; v_reg_table(5) := 'NULL'; DBMS_OUTPUT.PUT_LINE('地区名称:'||v_reg_table (1)||'、' ||v_reg_table (2)||'、' ||v_reg_table (3)||'、' ||v_reg_table (4)); DBMS_OUTPUT.PUT_LINE('第5个成员的值:'||v_reg_table(5)); END;
四、varry数据类型:数组
具有相同数据类型的一组成员的集合,每个成员都有一个唯一的下标。
定义VARRAY数据类型的语法如下:
TYPE VARRAY_NAME IS VARRAY(SIZE) OF ELEMENT_TYPE [NOT NULL];
VARRAY的使用举例:
DECLARE --定义一个最多保存5个VARCHAR(25)数据类型成员的VARRAY数据类型 TYPE reg_varray_type IS VARRAY(5) OF VARCHAR(25); --声明一个该VARRAY数据类型的变量 v_reg_varray REG_VARRAY_TYPE; BEGIN --用构造函数语法赋予初值 v_reg_varray := reg_varray_type ('中国', '美国', '英国', '日本', '法国'); DBMS_OUTPUT.PUT_LINE('地区名称:'||v_reg_varray(1)||'、' ||v_reg_varray(2)||'、' ||v_reg_varray(3)||'、' ||v_reg_varray(4)); DBMS_OUTPUT.PUT_LINE('赋予初值NULL的第5个成员的值:'||v_reg_varray(5)); --用构造函数语法赋予初值后就可以这样对成员赋值 v_reg_varray(5) := '法国'; DBMS_OUTPUT.PUT_LINE('第5个成员的值:'||v_reg_varray(5)); END;
到此这篇关于Oracle中PL/SQL复合数据类型的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。