No entiendo el error específico que está recibiendo, pero generalmente necesita incluir una conversión explícita al tipo apropiado en la instrucción SQL:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Esto se debe a que la declaración se entrega desde PL/SQL al motor SQL para su procesamiento y no tiene información sobre el tipo de variable más allá de que esté definida por el usuario.
Además, esto solo funciona si el tipo (t_pontos
) se declara a nivel de esquema, es decir, con un CREATE TYPE
declaración. Si se declara en algún lugar del código PL/SQL, p. en una especificación de paquete, el motor SQL no puede acceder a la definición de tipo.