PostgreSQL-视图-03-查询对象依赖关系视图-dba_dependencies

PostgreSQL查询对象依赖关系视图

sql 复制代码
-- PostgreSQL查询对象依赖关系视图

drop view if exists tzq.dba_dependencies;
create view tzq.dba_dependencies as 
with source_obj as (
  select sp.oid,sp.proname
        ,unnest(
           string_to_array(
             regexp_replace(
                regexp_replace(lower(sp.prosrc),'--.*?\n'::text, ''::text, 'g'::text)
                ,'\W+'::text, ' '::text, 'g'::text)
             , ' '::text)
         )
         as split_text
        ,sp.proowner::regrole::character varying as schema_name
        ,sp.proowner
    from pg_proc sp
   where (sp.proowner in (select pg_user.usesysid 
                            from pg_user
                           where pg_user.usename ~~ 'tzq%'::text or 
                                 pg_user.usename = 'jdbc_etl_in'::name or 
                                 pg_user.usename = 'ewf'::name
                          ))
)
,all_depend as (
  select t.schema_name as owner
        ,t.proname as name
        ,'procedure'::text as type
        ,p.proowner::regrole::character varying as referenced_owner
        ,p.proname as referenced_name
        ,'procedure'::text as referenced_type
        ,p.proowner
    from source_obj t
    join pg_proc p
      on t.split_text = p.proname
     and p.proowner <> 10::oid
  union all
  select t.schema_name as owner
        ,t.proname as name
        ,'procedure'::text as type
        ,p.schemaname as referenced_owner
        ,p.tablename as referenced_name
        ,'table'::text as referenced_type
        ,t.proowner
    from source_obj t
    join pg_tables p
      on t.split_text = p.tablename
     and (p.schemaname ~~ 'tzq%'::text or 
          p.schemaname = 'jdbc_etl_in'::name or 
          p.schemaname = 'ewf'::name)
)
select distinct
       owner
      ,name
      ,type
      ,referenced_owner
      ,referenced_name
      ,referenced_type
  from all_depend
;
相关推荐
天上掉下来个程小白7 分钟前
案例-14.文件上传-简介
数据库·spring boot·后端·mybatis·状态模式
哆木17 分钟前
排查生产sql查询缓慢
数据库·sql·mysql
橘子师兄1 小时前
分页功能组件开发
数据库·python·django
book01212 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
纠结哥_Shrek2 小时前
Oracle和Mysql的区别
数据库·mysql·oracle
极客先躯2 小时前
说说高级java每日一道面试题-2025年2月13日-数据库篇-请说说 MySQL 数据库的锁 ?
java·数据库·mysql·数据库的锁·模式分·粒度分·属性分
做梦敲代码2 小时前
达梦统计信息
数据库·达梦数据库
jiugie2 小时前
MongoDB学习
数据库·python·mongodb
hzulwy2 小时前
MongoDB应用设计调优
数据库·mongodb
我爱松子鱼3 小时前
MySQL 单表访问方法详解
数据库·mysql