Nie rozumiem konkretnego błędu, który otrzymujesz, ale generalnie musisz uwzględnić jawne rzutowanie na odpowiedni typ w instrukcji SQL:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Dzieje się tak, ponieważ instrukcja jest przekazywana z PL/SQL do silnika SQL w celu przetworzenia i nie zawiera informacji o typie zmiennej poza zdefiniowaną przez użytkownika.
Działa to również tylko wtedy, gdy typ (t_pontos
) jest deklarowana na poziomie schematu, czyli z CREATE TYPE
oświadczenie. Jeśli jest zadeklarowany gdzieś w kodzie PL/SQL, np. w specyfikacji pakietu silnik SQL nie może uzyskać dostępu do definicji typu.