Sì, questo è un problema noto.
PL/pgSQL (come qualsiasi altra funzione, eccetto su SQL
) è una "scatola nera" per PostgreSQL, quindi non è davvero possibile rilevare errori se non in runtime.
Puoi fare diverse cose:
- avvolgi la tua funzione chiamando
SQL
query inBEGIN
/COMMIT
dichiarazioni per avere un migliore controllo sugli errori; - aggiungi
EXCEPTION
blocchi al tuo codice per rilevare e tenere traccia degli errori. Tieni presente, tuttavia, che ciò influirà sulle prestazioni della funzione; - usa
plpgsql_check
estensione , sviluppato da Pavel Stěhule, che è uno dei principali contributori allo sviluppo di PL/pgSQL. Suppongo che alla fine questa estensione diventerà il nucleo di PostgreSQL, ma ci vorrà del tempo (ora siamo nello stato 9.4beta3); - Potresti anche esaminare questa domanda correlata:verifica della sintassi postgresql senza eseguire la query
E sembra davvero che tu abbia un enorme bisogno di un framework di unit test.