在PGAdmin中搜索所有函数的文本

问题描述 投票:0回答:4

将 PostgreSQL 与 pgAdmin 结合使用,想知道是否有一种方法可以在数据库的所有功能中搜索特定文本。

这可能吗?

sql postgresql pgadmin
4个回答
57
投票

这样的东西应该有效:

select proname, prosrc from pg_proc where prosrc like '%search text%';

参见如何显示postgresql中的函数、过程、触发器源代码?


5
投票

如果也需要架构信息(我们与许多人合作):

select
    nspname,
    proname,
    prosrc 
from pg_catalog.pg_proc pr
join pg_catalog.pg_namespace ns on ns.oid = pr.pronamespace
where prosrc ilike '%search text%'

1
投票

@Andreas 和 @steevee 发布的答案对我来说不起作用,所以我必须执行以下操作:

  1. 首先通过运行
    \x
  2. 启用扩展显示
  3. 然后
    \df+
    列出所有存储过程(在 less 模式下启用上面的扩展显示),然后按
    /
    键搜索关键字。

0
投票

通用

select  n.nspname as function_schema,
        p.proname as function_name,
        l.lanname as function_language,
        case when l.lanname = 'internal' then p.prosrc
            else pg_get_functiondef(p.oid)
            end as definition,
       pg_get_function_arguments(p.oid) as function_arguments,
       t.typname as return_type
from pg_proc p
left join pg_namespace n on p.pronamespace = n.oid
left join pg_language l on p.prolang = l.oid
left join pg_type t on t.oid = p.prorettype 
where n.nspname not in ('pg_catalog', 'information_schema')
order by function_schema,
         function_name;

PostgreSQL 11+

select n.nspname as schema_name,
       p.proname as specific_name,
       case p.prokind 
            when 'f' then 'FUNCTION'
            when 'p' then 'PROCEDURE'
            when 'a' then 'AGGREGATE'
            when 'w' then 'WINDOW'
            end as kind,
       l.lanname as language,
       case when l.lanname = 'internal' then p.prosrc
            else pg_get_functiondef(p.oid)
            end as definition,
       pg_get_function_arguments(p.oid) as arguments,
       t.typname as return_type
from pg_proc p
left join pg_namespace n on p.pronamespace = n.oid
left join pg_language l on p.prolang = l.oid
left join pg_type t on t.oid = p.prorettype 
where n.nspname not in ('pg_catalog', 'information_schema')
order by schema_name,
         specific_name;
© www.soinside.com 2019 - 2024. All rights reserved.