PostgreSQL 获取函数定义pg_get_functiondef()
PostgreSQL 支持创建自定义函数,在 psql 中执行 \df 可以看到创建的自定义函数信息,如下
postgres=# \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+---------------+------------------+---------------------+------
public | myfunc_insert | trigger | | func
(1 row)
以上可以看到函数名称等信息,但是看不到函数详细的定义信息,此时可通过 pg_get_functiondef() 系统函数来获取函数的详细定义信息,如下:
postgres=# select pg_get_functiondef('myfunc_insert'::regproc::oid);
pg_get_functiondef
-----------------------------------------------------------
CREATE OR REPLACE FUNCTION public.myfunc_insert() +
RETURNS trigger +
LANGUAGE plpgsql +
AS $function$ +
begin +
insert into t2(id, name) values (new.id, new.name);+
return new; +
end; +
$function$ +
(1 row)
pg_get_functiondef() 函数实际上是根据元数据信息重建函数或存储过程的创建命令,这是一个反编译的重建,而不是命令的原始文本。该函数参数为 oid,返回结果是一个完整的 CREATE OR REPLACE FUNCTION 或 CREATE OR REPREPLACE PROCEDURE 语句。
文章评论
共0条评论