Nerozumím konkrétní chybě, kterou dostáváte, ale obecně musíte do příkazu SQL zahrnout explicitní přetypování na příslušný typ:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Důvodem je to, že příkaz je předán z PL/SQL ke zpracování do SQL enginu a kromě toho, že je uživatelsky definován, nemá žádné informace o typu proměnné.
Také to funguje pouze v případě, že typ (t_pontos
) je deklarován na úrovni schématu, tj. s CREATE TYPE
tvrzení. Pokud je deklarován někde v PL/SQL kódu, např. ve specifikaci balíčku nemůže SQL engine přistupovat k definici typu.