ok, beklager, at dette ikke er komplet, men for at følge op med @Lukas, her er hvad jeg har indtil videre:
For det første, i stedet for at forsøge at oprette nogen data/anytype-typer, prøvede jeg at bruge XML udtrukket fra en markør...underligt, men det er generisk:
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;
/
Nu, for at kalde det, har du brug for en markør, så jeg prøvede at caste til markøren i pl/sql, noget som:
open v_cur for select * from table(cast(v_tab as tab_type));
Men afhængigt af hvordan v_tab er defineret, kan dette muligvis forårsage problemer i pl/sql cast (brug af %rowtype i indlejret tabel ser ud til at give problemer).
I hvert fald kan du bygge videre på dette eller forfine det, som du vil. (og brug evt. xmltable...)
Håber det hjælper