--多级嵌套表类型
CREATE OR REPLACE TYPE TAB_TYPE IS table OF varchar(100);
CREATE OR REPLACE TYPE TAB_TYPE_V IS table OF TAB_TYPE;
CREATE OR REPLACE TYPE TAB_TYPE IS table OF varchar(100);
CREATE OR REPLACE TYPE TAB_TYPE_V IS table OF TAB_TYPE;
create or replace procedure Get_Data(P_Data in out TAB_TYPE_V) is
CURSOR cur_get_receipt is
select t.OBJECT_NAME, t.OBJECT_TYPE
from user_objects t
where t.OBJECT_TYPE = 'TABLE'
and t.LAST_DDL_TIME > sysdate - 1;
i int := 0;
v_Data TAB_TYPE_V := TAB_TYPE_V(TAB_TYPE(),TAB_TYPE());
begin
for rec_receipt in cur_get_receipt loop
i := i + 1;
v_Data.extend;
v_Data(i).extend;
v_Data(i)(1) := rec_receipt.OBJECT_NAME;
v_Data(i).extend;
v_Data(i)(2) := rec_receipt.OBJECT_TYPE;
dbms_output.put_line(v_Data(i) (1));
end loop;
P_Data := v_Data;
exception
when others then
dbms_output.put_line(sqlerrm);
end;
/
CURSOR cur_get_receipt is
select t.OBJECT_NAME, t.OBJECT_TYPE
from user_objects t
where t.OBJECT_TYPE = 'TABLE'
and t.LAST_DDL_TIME > sysdate - 1;
i int := 0;
v_Data TAB_TYPE_V := TAB_TYPE_V(TAB_TYPE(),TAB_TYPE());
begin
for rec_receipt in cur_get_receipt loop
i := i + 1;
v_Data.extend;
v_Data(i).extend;
v_Data(i)(1) := rec_receipt.OBJECT_NAME;
v_Data(i).extend;
v_Data(i)(2) := rec_receipt.OBJECT_TYPE;
dbms_output.put_line(v_Data(i) (1));
end loop;
P_Data := v_Data;
exception
when others then
dbms_output.put_line(sqlerrm);
end;
/
DECLARE
v_Data TAB_TYPE_V := TAB_TYPE_V(TAB_TYPE());
v_data1 tab_type;
BEGIN
v_data.extend;
v_Data(1).extend;
v_Data(1)(1) := '1111';
v_Data(1).extend;
v_Data(1)(2) := '2222';
v_Data(1).extend;
v_Data(1)(3) := '3333';
--Get_Data(v_Data);
--dbms_output.put_line(11111);
dbms_output.put_line(v_data(1)(1));
dbms_output.put_line(v_data(1)(2));
dbms_output.put_line(v_data(1)(3));
END;
/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25128871/viewspace-734589/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25128871/viewspace-734589/