Eu escrevi muito pro*c no passado e, com o tempo, percebi que você não quer verificar o código de retorno da instrução PREPARE, pois ela nunca retorna nenhum valor. Aqui está o que quero dizer:
O valor PREPARE sqlca.sqlcode é o código de retorno da instrução que foi executada imediatamente ANTES da instrução PREPARE. Em outras palavras, se você verificar a saída da instrução PREPARE e a instrução executada logo antes da instrução PREPARE falhar, o código de retorno da preparação falhou. Se a instrução anterior foi bem-sucedida, então o PREPARE parece ter sido bem-sucedido.
Em outras palavras, o valor prepare sqlca.sqlcode é basicamente nada (ele nunca falha sozinho). Portanto, se o PREPARE estiver falhando agora, verifique a instrução que foi executada logo antes da instrução PREPARE e verifique se está verificando o valor sqlca.sqlcode dessa. Minha aposta é que a declaração anterior está falhando e o erro retornado está relacionado a essa declaração. Faz sentido?
-Jim