ok, przepraszam, to nie jest kompletne, ale w celu kontynuacji z @Lukasem, oto, co mam do tej pory:
Po pierwsze, zamiast próbować tworzyć typy anydata/anytype, próbowałem użyć XML wyodrębnionego z kursora... dziwne, ale jego ogólne:
CREATE OR REPLACE procedure printCur(in_cursor IN sys_refcursor) IS
begin
FOR c IN (SELECT ROWNUM rn,
t2.COLUMN_VALUE.getrootelement () NAME,
EXTRACTVALUE (t2.COLUMN_VALUE, 'node()') VALUE
FROM TABLE (XMLSEQUENCE (in_cursor)) t,
TABLE (XMLSEQUENCE (EXTRACT (COLUMN_VALUE, '/ROW/node()'))) t2
order by 1)
LOOP
DBMS_OUTPUT.put_line (c.NAME || ': ' || c.VALUE);
END LOOP;
exception
when others then raise;
end;
/
Teraz, aby to nazwać, potrzebujesz kursora, więc próbowałem rzutować na kursor w pl/sql, coś takiego:
open v_cur for select * from table(cast(v_tab as tab_type));
Ale w zależności od tego, jak zdefiniowana jest v_tab, może to powodować problemy z rzutowaniem pl/sql (używanie %rowtype w definicji tabeli zagnieżdżonej wydaje się powodować problemy).
W każdym razie możesz na tym bazować lub udoskonalać, jak chcesz. (i ewentualnie użyj xmltable...)
Mam nadzieję, że to pomoże