无论如何,在 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;
关于postgresql - 使用 plpgsql 获取函数内部当前函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611596/