Eu não entendo o erro específico que você está recebendo, mas geralmente você precisa incluir uma conversão explícita para o tipo apropriado na instrução SQL:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Isso ocorre porque a instrução é transferida do PL/SQL para o mecanismo SQL para processamento e não possui informações sobre o tipo da variável além de ser definida pelo usuário.
Além disso, isso só funciona se o tipo (
t_pontos
) é declarado no nível do esquema, ou seja, com um CREATE TYPE
declaração. Se for declarado em algum lugar no código PL/SQL, por exemplo. em uma especificação de pacote, o mecanismo SQL não pode acessar a definição de tipo.