benutzerdefinierte Meldungen ausgeben?

Hallo alle zusammen,

ich möchte aus Funktionen mir benutzerdefinierte Meldungen ausgeben lassen.
Dies klappt auch mit RAISE NOTICE. Wenn jedoch jetzt eine zweite Funktion die erste aufruft bekomme ich noch zusätzlich den Hinweis wo der Fehler auftrat. Kann man dieses “KONTEXT” irgendwo noch abschalten? Oder gibt es eine andere Möglichkeit eine Konsolenausgabe zu realisieren, in der Form PRINT “bla”?
Unten mal meine zwei einfachen Funktionen mit deren Ausgabe. Kann mir jemand
weiterhelfen?

Vielen Dank.

Mathias

CREATE FUNCTION F1() RETURNS void AS '
BEGIN
  RAISE NOTICE ''Funktion 1'';
  RETURN;
END;
' LANGUAGE plpgsql;

CREATE FUNCTION F2() RETURNS void AS '
BEGIN
  RAISE NOTICE ''Funktion 2'';
  PERFROM F1();
  RETURN;
END;
' LANGUAGE plpgsql;

Aufruf: select F2();
Ausgabe:
NOTICE: Funktion 2
NOTICE: Funktion 1
KONTEXT: SQL statement “SELCET F1()”
PL/pgSQL function “f2” line 3 at perform

Hallo Mathias,

irgendwo in der Doku gibt es ein Befehl, mit dem man den Level der Meldungen einstellen kann. Vielleicht hilft der weiter.



mfg

fristo

Hallo Fristo,

ich habe noch mal in der Doku hin und her geschaut. Das einzigste was ich gefunden habe bzgl. Level ist, dass ich anstatt notice debug oder Exception einsetzen kann, ändert aber nichts bzgl. der Kontexmeldung. Ist dir vielleicht doch noch der Befehl eingefallen?

Danke
Mathias

Hallo Mathias,

ich weiß nicht welche Doku Du gelesen hast, auch nicht mit welcher Version von PostgreSQL Du arbeitest. Meine Angaben beziehen sich auf die Version 8.1.4.

In der englischen Original-Doku Kapitel 36.9. “Errors and Messages” kannst Du folgendes lesen:


Use the RAISE statement to report messages and raise errors.

RAISE level format [, expression [, …]];

Possible levels are DEBUG, LOG, INFO, NOTICE, WARNING, and EXCEPTION. > EXCEPTION raises an error (which normally aborts the current transaction); the other levels only generate messages of different priority levels. > Whether messages of a particular priority are reported to the client, written to the server log, or both is controlled by the log_min_messages and client_min_messages configuration variables. See Chapter 17 for more information.


mfg

fristo

Hallo fristo,

vielen Dank für deinen Hinweis. Dies war mir schon bekannt, ändert jedoch nichts an der Tatsache das die Zusatzangabe “Kontext …” trotzdem erscheint. Versucht habe ich es mit der Version 8.0.4. . Werde es noch mal mit der neusten Version probieren, mal sehen wie es dort ist. Trotzdem nochmal Danke.

Mathias