創建函數查詢greenplum使用到某個數據表的所有視圖


有些時候,我們需要查詢哪些視圖引用了某張數據表,在greenplumdb里面,可以創建如下的函數來查詢,代碼如下:

CREATE OR REPLACE FUNCTION public.get_views_used_by_table(text)
    RETURNS setof record  as 
$FBODY$
    select distinct vn.nspname || '.'||vc.relname as viewname  
    from pg_class c join pg_namespace n on n.oid=c.relnamespace
    left join pg_depend d on d.refobjid =c.oid 
    left join pg_rewrite r on r.oid =d.objid
    left join pg_class vc on r.ev_class =vc.oid
    left join pg_namespace vn on vc.relnamespace=vn.oid
    where  d.deptype='n' and
    d.classid =2618 and 
  r.rulename ='_RETURN' and
  vc.relkind='v' and 
  c.oid =$1::regclass ;
$FBODY$

LANGUAGE sql volatile;

使用如下:

testdb1=# select public.get_views_used_by_table('public.test9');
 get_views_used_by_table 
-------------------------
 (public.v_test9)
(1 row)

testdb1=# select * from public.get_views_used_by_table('public.test9') as A(viewname text);
    viewname    
----------------
 public.v_test9
(1 row)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM