/*变长数组元素个数有限制,下标从1开始*/
DECLARE
CURSOR cur_dept IS SELECT dname FROM dept;
TYPE name_type IS VARRAY(100) OF dept.dname%TYPE;
v_dept name_type := name_type(); /*初始化变长数组,不然会报错 */
v_counter INTEGER := 0;
BEGIN
FOR name_rec IN cur_dept LOOP
v_counter := v_counter + 1;
v_dept.EXTEND; /*使用extend进行扩展 */
v_dept(v_counter) := name_rec.dname;
DBMS_OUTPUT.put_line('名称为: (' || v_counter || ') is :' || v_dept(v_counter));
END LOOP;
END;
------------------------------------------------------------------------------------------------
变长数组还可以做为数据库表列的数据类型,但是变长数组的元素个数有限制,不想嵌套表,元素个数没有限制
create type dept_type as object(
name varchar2(100)
);
create type varray_data is varray(100) of dept_type;
create table test(
id number(10),
t_name varray_data
);