O valor do atributo ou elemento ORACLE SQL ORA-22814 é maior que o especificado no tipo
Se eu fosse você, declararia a função como pipeline e retornaria valores pela instrução pipe row. E certamente se livrar de CAST/multiset. A instrução de loop for é sua escolha. Tenho certeza que vai funcionar usando meu conselho.