ok, sorry, dit is niet compleet, maar om op te volgen met @Lukas, dit is wat ik tot nu toe heb:
Ten eerste, in plaats van te proberen om het even welke data/anytype-types te creëren, probeerde ik XML te gebruiken die was geëxtraheerd uit een cursor... raar, maar het is generiek:
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;
/
Om het nu te noemen, heb je een cursor nodig, dus ik probeerde naar de cursor te casten in pl/sql, zoiets als:
open v_cur for select * from table(cast(v_tab as tab_type));
Maar afhankelijk van hoe v_tab is gedefinieerd, kan dit al dan niet problemen veroorzaken in pl/sql cast (het gebruik van %rowtype in geneste tabeldef lijkt problemen te geven).
Hoe dan ook, je kunt hierop voortbouwen of verfijnen zoals je wilt. (en eventueel xmltable gebruiken...)
Ik hoop dat dat helpt