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条评论