Como Allan, não sou especialista em ODP. No entanto, sei que o Oracle armazena o valor de retorno de uma função como PARÂMETRO
0 no Dicionário de Dados. Os parâmetros de entrada são 1 , 2 , etc Então, se você declarar e atribuir o valor de retorno antes você atribui os parâmetros de entrada que podem funcionar.