sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL vs Oracle:kompileringstidskontroll av PL/pgSQL

Ja, detta är ett känt problem.

PL/pgSQL (som alla andra funktioner, förutom på SQL ) är en "svart låda" för PostgreSQL, därför är det inte riktigt möjligt att upptäcka fel förutom under körning.

Du kan göra flera saker:

  1. omslut din funktion som anropar SQL frågor till BEGIN / COMMIT uttalanden för att få bättre kontroll över fel;
  2. lägg till EXCEPTION block till din kod för att fånga och spåra fel. Observera dock att detta kommer att påverka funktionsprestanda;
  3. använd plpgsql_check förlängning , utvecklad av Pavel Stěhule, som är en av de främsta bidragsgivarna till PL/pgSQL-utveckling. Jag antar att den här tillägget till slut kommer att hamna i kärnan av PostgreSQL, men det kommer att ta lite tid (nu är vi i 9.4beta3-tillstånd);
  4. Du kan också titta på den här relaterade frågan:postgresql-syntaxkontroll utan att köra frågan

Och det ser verkligen ut som att du är i ett stort behov av ett ramverk för enhetstestning.



  1. Vad är databasbegränsningar?

  2. Konvertera utdata från MySQL-fråga till utf8

  3. Hur man genererar rader för datumintervall efter nyckel

  4. Hur får man en exekveringsplan för en pågående fråga i postgresql?