Ik begrijp de specifieke fout die u krijgt niet, maar over het algemeen moet u een expliciete cast naar het juiste type opnemen in de SQL-instructie:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Dit komt omdat de instructie wordt overgedragen van PL/SQL naar de SQL-engine voor verwerking en er geen informatie is over het type variabele, behalve dat deze door de gebruiker is gedefinieerd.
Dit werkt ook alleen als het type (t_pontos
) wordt gedeclareerd op schemaniveau, d.w.z. met een CREATE TYPE
uitspraak. Als het ergens in PL/SQL-code wordt gedeclareerd, b.v. in een pakketspecificatie heeft de SQL-engine geen toegang tot de typedefinitie.