复合类型-pl/sql表类型 相当于高级语言中的数组,但是需要注意的是在高级语言中数组的下标不能为负数,而pl/sql是可以为负数的,并且表元素的下标没有限制。实例如下: Sql代码 1.declare 2.--定义了一个pl/sql表类型sp_table_type,该类型是用于存放emp.ename%type这种类型的数据, 3.--index by binary_integer 表示下标是整数 4. type sp_table_type is table of emp.ename%type 5. index by binary_integer; 6.--定义了一个sp_table变量,这个变量的类型是sp_table_type 7. sp_table sp_table_type; 8.begin 9. select ename into sp_table(-1) from emp where empno = 7788; 10. dbms_output.put_line(‘员工名:‘ || sp_table(-1)); 11.end;
说明: sp_table_type 是pl/sql表类型 emp.ename%type 指定了表的元素的类型和长度 sp_table 为pl/sql表变量 sp_table(0) 则表示下标为0的元素 注意:如果把select ename into sp_table(-1) from emp where empno = 7788;变成select ename into sp_table(-1) from emp;则运行时会出现错误,错误如下: ORA-01422:实际返回的行数超出请求的行数 解决方法是:使用参照变量(这里不讲)
复合变量——嵌套表(nested table)
复合变量——变长数组(varray)
原文:http://www.cnblogs.com/yaowen/p/4858229.html