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

PostgreSQL vs Oracle:kompileringstidskontrol af PL/pgSQL

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:

  1. indpak din funktion, der kalder SQL forespørgsler i BEGIN / COMMIT udsagn for at have bedre kontrol over fejl;
  2. tilføj EXCEPTION blokerer til din kode for at fange og spore fejl. Bemærk dog, at dette vil påvirke funktionsydelsen;
  3. 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);
  4. 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.



  1. Hvornår/hvordan er standardværdiudtryksfunktioner bundet med hensyn til søgesti?

  2. udvidelse af PDO-klassen

  3. Hvordan vælger man række efter primærnøgle, én række 'ovenfor' og en række 'under' ved anden kolonne?

  4. Hjælpeprogram:Generer PL/SQL-procedure til eksport af data fra en tabel på 2 minutter