postgresql - 使用 plpgsql 获取函数内部当前函数的名称

标签 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;

关于postgresql - 使用 plpgsql 获取函数内部当前函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611596/

相关文章:

sql - 当连接超时时,Postgres 行锁会发生什么情况?

postgresql - 如何在复合类型的 Postgres 数组中存储双引号?

postgresql - 如何在客户端代码中获取\计时结果?

sql-server - T-SQL 中的存储过程转换为 PostgreSQL

Python psycopg2 设置约束可延迟

java - AWS java lambda 中的 org.postgresql.util.PSQLException : FATAL: database "<<database_name>>" does not exist,

sql - FULL OUTER JOIN 将表与 PostgreSQL 合并

postgresql - 返回多行的 PostgreSQL 函数的问题

sql - 如何在其他过程中使用存储过程中创建的查询

sql - 在 Postgresql 中水平连接两个选择查询