create or replace procedure funName(
aa IN VARCHAR2,
bb IN INTEGER,
result OUT types.cursorType
) return TYPE_TABLE 【VARCHAR2 | INTEGER ...】IS
v_un DATE;
v_u1 VARCHAR2(1000);
v_u2 VARCHAR2(1000);
sqlmain VARCHAR2(5000); --主SQL
v_count INT; --数据集的行数
a INTEGER := 1;
tb_recv TYPE_TABLE := TYPE_TABLE(); --oracle里的数组
TYPE cur IS REF CURSOR;
cur_local cur;
begin
sqlmain := ' select sysdate a1,sysdate a2 from dual';
if ...then
sqlmain := sqlmain || ' and dual.dummy = ''X'' ';
end if;
OPEN cur_local FOR sqlmain;
tb_recv.delete; --#清空数组
LOOP
FETCH cur_local
INTO v_u1,v_u2
EXIT WHEN cur_local%NOTFOUND;
tb_recv.extend;
tb_recv(a) := TYPE_ETM062_01_APPROVETYPE(v_u1,v_u2 );
a := a + 1;
END LOOP;
return tb_recv;
EXCEPTION
WHEN OTHERS THEN
........
ROLLBACK;
end funName;