PostgreSQL vs Oracle: verificação em tempo de compilação do PL / pgSQL

Sumário executivo: O PostgreSQL é incrível, mas estamos enfrentando muitos problemas no trabalho devido ao fato de adiar muitas verificações no código PL / pgSQL até o tempo de execução.Existe uma maneira de torná-lo mais parecido com o PL / SQL da Oracle a esse respeito?

Por exemplo...

Tente executar isso em qualquer banco de dados Oracle:

create function foo return number as
begin
  select a from dual;
  return a;
end;

A Oracle imediatamente (ou seja, emtempo de compilação!) responda com:

[Error] ORA-00904: invalid identifier

Agora tente a coisa semanticamente equivalente no PostgreSQL:

CREATE OR REPLACE FUNCTION public.foo ()
    RETURNS integer AS
$body$
    BEGIN
        select a;
        return a;
    END;
$body$
LANGUAGE plpgsql;

Você verá - infelizmente! - execute bem ... Nenhum erro é relatado.

Mas quando você tenta chamar essa função (ou seja, emtempo de execução) você vai ter:

ERROR:  column "a" does not exist
LINE 1: select a

Existe uma maneira de forçar o PostgreSQL a executar análise de sintaxe e verificação no tempo de definição da função - não no tempo de execução? Temos toneladas de código PL / SQL legado em funcionamento, que estamos portando para o PostgreSQL - mas a falta detempo de compilação As verificações são muito dolorosas, forçando-nos a fazer trabalho manual - ou seja, escrevendo código para testar todos os caminhos de código em todas as funções / procedimentos - que, de outra forma, eram automatizados no Oracle.

questionAnswers(2)

yourAnswerToTheQuestion