Dav*_*d S 10 postgresql plpgsql postgresql-9.1
无论如何,在plpgsql函数中你可以获得函数的名称吗?甚至是功能的OID?
我知道plpgsql中有一些"特殊"变量(如FOUND),但似乎没有办法解决这个问题.(虽然,如果您的函数是用C语言编写的,我已经读过了.)这并不重要,但它会使我做得更好/更不脆弱.
我正在使用PostgreSQL v.9.1.5
从Postgres 9.4开始,以下函数将返回自己的名称:
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;
Run Code Online (Sandbox Code Playgroud)
更新:PostgreSQL 9.4中提供了调用堆栈的可能性
不,如何在plpgsql函数中获取当前执行函数的名称.
一年前,我编写了访问调用堆栈的函数 - 它是orafce的一部分.你可以从堆栈中获取最后一个函数