Ano, toto je známý problém.
PL/pgSQL (jako každá jiná funkce, kromě SQL
) je „černá skříňka“ pro PostgreSQL, a proto není ve skutečnosti možné detekovat chyby kromě za běhu.
Můžete udělat několik věcí:
- zabalte volání funkce
SQL
dotazy doBEGIN
/COMMIT
prohlášení, abyste měli lepší kontrolu nad chybami; - přidat
EXCEPTION
bloky do vašeho kódu, abyste zachytili a sledovali chyby. Pamatujte však, že to ovlivní výkon funkce; - použijte
plpgsql_check
rozšíření , vyvinutý Pavlem Stěhulem, který je jedním z hlavních přispěvatelů k vývoji PL/pgSQL. Předpokládám, že se toto rozšíření nakonec dostane do jádra PostgreSQL, ale nějakou dobu to potrvá (nyní jsme ve stavu 9.4beta3); - Můžete se také podívat na tuto související otázku:kontrola syntaxe postgresql bez spuštění dotazu
A skutečně to vypadá, že velmi potřebujete rámec pro testování jednotek.