Getting name of the current function inside of the function with plpgsql

As of Postgres 9.4, the below function will return its own name:

CREATE OR REPLACE FUNCTION your_schema.get_curr_fx_name()
RETURNS text AS  $$
DECLARE
  stack text; fcesig text;
BEGIN
  GET DIAGNOSTICS stack = PG_CONTEXT;
  fcesig := substring(stack from 'function (.*?) line');
  RETURN fcesig::regprocedure::text;
END;
$$ LANGUAGE plpgsql;

Update: possibility to take call stack is available in PostgreSQL 9.4

No, there is no way how to get name of currently executed function in plpgsql function.

Some year ago I wrote functions for access to call stack - it is part of orafce. You can get last function from stack


For triggers use TG_NAME to get the name of the trigger (not the trigger function) fired.

You also have current_query() to get the top level query executed by the application, the root cause for your function's execution. It won't show you any intermediate functions.

Otherwise, not really AFAIK and I did go looking for it a while ago when I wanted to print a "current function stack" for debugging. Others may know more.

UPDATE: In Pg 9.4 and above you can also use PG_CONTEXT to the call stack, but not just the current function name.