Sim, este é um problema conhecido.
PL/pgSQL (como qualquer outra função, exceto em
SQL
) é uma “caixa preta” para o PostgreSQL, portanto não é realmente possível detectar erros exceto em tempo de execução. Você pode fazer várias coisas:
- agrupe sua função chamando
SQL
consultas emBEGIN
/COMMIT
instruções para ter um melhor controle sobre os erros; - adicione
EXCEPTION
blocos ao seu código para detectar e rastrear erros. Observe, porém, que isso afetará o desempenho da função; - use
plpgsql_check
extensão , desenvolvido por Pavel Stěhule, que é um dos principais contribuidores para o desenvolvimento do PL/pgSQL. Suponho que, eventualmente, essa extensão chegará ao núcleo do PostgreSQL, mas levará algum tempo (agora estamos no estado 9.4beta3); - Você também pode analisar esta pergunta relacionada:verificação de sintaxe postgresql sem executar a consulta
E realmente parece que você está precisando muito de uma estrutura de teste de unidade.