Не разбирам конкретната грешка, която получавате, но като цяло трябва да включите изрично преобразуване на подходящия тип в SQL оператора:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Това е така, защото операторът се предава от PL/SQL на SQL машината за обработка и няма информация за типа на променливата, освен че е дефинирана от потребителя.
Освен това това работи само ако типът (t_pontos
) се декларира на ниво схема, т.е. с CREATE TYPE
изявление. Ако е декларирано някъде в PL/SQL кода, напр. в спецификация на пакет SQL машината няма достъп до дефиницията на типа.