Jeg forstår ikke den specifikke fejl, du får, men generelt skal du inkludere en eksplicit cast til den relevante type i SQL-sætningen:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Dette skyldes, at sætningen videregives fra PL/SQL til SQL-motoren til behandling, og den har ingen information om variablens type, ud over at den er brugerdefineret.
Dette virker også kun, hvis typen (t_pontos
) er deklareret på skemaniveauet, dvs. med en CREATE TYPE
udmelding. Hvis det er deklareret et sted i PL/SQL-kode, f.eks. i en pakkespecifikation kan SQL-motoren ikke få adgang til typedefinitionen.