database – 如何使用PostgreSQL中的特定表获取存储过程列表?

在PostgreSQL(9.3)中有一种简单的方法来获取使用特定表的存储过程列表吗?

我正在更改几个表,需要修复使用它们的存储过程.

解决方法

在其正文中包含文本“thetable”的函数.

查询返回函数名称,行号和包含’thetable’的行:

select *
from (
    select proname,row_number() over (partition by proname) as line,textline
    from (
        select proname,unnest(string_to_array(prosrc,chr(10))) textline
        from pg_proc p
        join pg_namespace n on n.oid = p.pronamespace
        where nspname = 'public'
        and prosrc ilike '%thetable%'
        ) lines
    ) x
    where textline ilike '%thetable%';

具有与表相关联的任何参数或返回值的函数.

例如:

create function f2(rec thetable)...
create function f1() returns setof thetable...

此查询提供函数的名称,返回类型和参数类型:

with rtype as (
    select reltype 
    from pg_class
    where relname = 'thetable')
select distinct on (proname) proname,prorettype,proargtypes
from pg_proc p
join pg_namespace n on n.oid = p.pronamespace
cross join rtype
where nspname = 'public'
and (
    prorettype = reltype 
    or reltype::text = any(string_to_array(proargtypes::text,' ')))

当然,您可以将查询合并为一个.我将它们用于不同的目的.

相关文章

文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,...
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb...
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才...
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation...
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgr...
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解...