PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL vs. Oracle:Überprüfung von PL/pgSQL zur Kompilierzeit

Ja, dies ist ein bekanntes Problem.

PL/pgSQL (wie jede andere Funktion, außer auf SQL ) ist eine „Blackbox“ für PostgreSQL, daher ist es nicht wirklich möglich, Fehler außer zur Laufzeit zu erkennen.

Sie können mehrere Dinge tun:

  1. verpacken Sie Ihre Funktion, die SQL aufruft Abfragen in BEGIN / COMMIT Anweisungen, um Fehler besser kontrollieren zu können;
  2. fügen Sie EXCEPTION Blöcke zu Ihrem Code, um Fehler abzufangen und zu verfolgen. Beachten Sie jedoch, dass dies die Leistung der Funktion beeinträchtigt;
  3. Verwenden Sie plpgsql_check Erweiterung , entwickelt von Pavel Stěhule, der einer der Hauptverantwortlichen für die Entwicklung von PL/pgSQL ist. Ich nehme an, diese Erweiterung wird es irgendwann in den Kern von PostgreSQL schaffen, aber es wird einige Zeit dauern (jetzt sind wir im 9.4beta3-Status);
  4. Sie können sich auch diese verwandte Frage ansehen:Postgresql-Syntaxprüfung ohne Ausführen der Abfrage

Und es sieht wirklich so aus, als ob Sie dringend ein Unit-Testing-Framework benötigen.