PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL vs Oracle:controllo in fase di compilazione di PL/pgSQL

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:

  1. avvolgi la tua funzione chiamando SQL query in BEGIN / COMMIT dichiarazioni per avere un migliore controllo sugli errori;
  2. aggiungi EXCEPTION blocchi al tuo codice per rilevare e tenere traccia degli errori. Tieni presente, tuttavia, che ciò influirà sulle prestazioni della funzione;
  3. 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);
  4. 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.