Gibt es trotzdem innerhalb einer plpgsql-Funktion, dass Sie den Namen der Funktion bekommen können? Oder auch die OID der Funktion?
Ich weiß, dass es in plpgsql einige "spezielle" Variablen (wie FOUND) gibt, aber es scheint keine Möglichkeit zu geben, dies zu erreichen. (Obwohl ich gelesen habe, wo es möglich zu sein scheint, wenn Ihre Funktion in C geschrieben ist). Es ist nicht kritisch, aber es würde etwas machen, was ich etwas netter / weniger zerbrechlich mache.
Ich benutze PostgreSQL v. 9.1.5
Bei Triggern verwenden Sie TG_NAME , um den Namen des Triggers (nicht den Trigger) zu erhalten Funktion) ausgelöst.
Sie haben auch current_query()
, um die von der Anwendung ausgeführte Top-Level -Abfrage zu erhalten, die die Ursache für die Ausführung Ihrer Funktion ist. Es zeigt Ihnen keine Zwischenfunktionen.
Sonst nicht wirklich AFAIK und ich haben vor einer Weile nach dem gesucht, als ich einen "aktuellen Funktionsstapel" zum Debuggen drucken wollte. Andere wissen vielleicht mehr.
UPDATE : In Pg 9.4 und höher können Sie auch PG_CONTEXT
zum Aufruf-Stack verwenden, aber nicht nur den aktuellen Funktionsnamen.
Update: Möglichkeit, Call-Stack zu nehmen, ist in PostgreSQL 9.4
verfügbar
Nein, es gibt keine Möglichkeit, den Namen der aktuell ausgeführten Funktion in der plpgsql-Funktion zu erhalten.
Vor einigen Jahren habe ich Funktionen für den Zugriff auf Callstack geschrieben - es ist Teil von orafce. Sie können letzte Funktion von Stapel
erhaltenTags und Links postgresql postgresql-9.1 plpgsql