Ja, dette er et kendt problem.
PL/pgSQL (som enhver anden funktion, undtagen på SQL
) er en "sort boks" for PostgreSQL, derfor er det ikke rigtig muligt at opdage fejl undtagen i runtime.
Du kan gøre flere ting:
- indpak din funktion, der kalder
SQL
forespørgsler iBEGIN
/COMMIT
udsagn for at have bedre kontrol over fejl; - tilføj
EXCEPTION
blokerer til din kode for at fange og spore fejl. Bemærk dog, at dette vil påvirke funktionsydelsen; - brug
plpgsql_check
udvidelse , udviklet af Pavel Stěhule, som er en af de vigtigste bidragydere til PL/pgSQL-udvikling. Jeg formoder, at denne udvidelse til sidst vil gøre det til kernen af PostgreSQL, men det vil tage noget tid (nu er vi i 9.4beta3-tilstand); - Du kan også se på dette relaterede spørgsmål:postgresql syntakskontrol uden at køre forespørgslen
Og det ser virkelig ud til, at du har et enormt behov for en enhedstestramme.