zOs/SQL/CATRIRPA
-- Table Abhängigkeiten über RI
-- dieses Query zeigt die Abhängigkeits-Levels
-- einer Menge von Tables
-- die richtige LadeReihefolge ist vom höchsten Level nach 0
-- Tables mit zyklischen RI-Abhängigkeiten werden mit Level=999
-- angezeigt, für diese ist ein Check unumgänglich
--
-- --> hier gehen wir die Parents hoch, für LoadReihenfolge
-- für LoadReihenfolge besser Children runter --> sql(catRir)
--
with ri (lev, creator, tbName, refTbCreator, refTbName, relName) as
( -- RekursionsStart
select 0, nullif('',''), nullIf('',''), Creator, Name, nullIf('','')
from sysibm.sysTables s
-->>> hier gewünschte Tabellen auswählen <<<--
where type = 'T'
-- and dbName like 'CT02%'
and creator = 'VDPS2' and
name in ( 'XTRECORD'
,'XTCUSTOMER'
,'XTREQUEST'
,'XTREQUESTDETAIL'
,'XTVIEW'
,'XTVIEWATTRIBUTE'
,'XTRECORDATTRIBUTE'
,'XTREFERENCEMODULE'
,'XTPROCESSINGSTEP'
,'XTSEARCHATTRIBUTE'
,'XTSEARCHSQL'
,'XTREQUESTFILTER'
)
-- RekursionsSchritt: zu Parents join n
union all select alt.lev+1, neu.creator, neu.tbName,
neu.refTbCreator, neu.refTbName, neu.relName
from ri alt, sysibm.sysRels neu
-- vom child zum Parent
where neu.creator = alt.refTbCreator
and neu.tbname = alt.refTbName
-- Zyklen der Länge 1 ignorieren
and not ( neu.creator = neu.refTbCreator
and neu.tbname = neu.refTbName)
and lev < 999
)
-- bei Truncation (SQLCODE = 445)
-- Länge vergrössern
select smallint(max(lev)) "level",
char(strip(refTbCreator) ||'.'|| strip(refTbName), 32) "parent",
smallInt(count(distinct creator || tbName)) "#child",
min(char(strip(creator) ||'.'|| strip(tbName), 32)) "firstChild",
max(char(strip(creator) ||'.'|| strip(tbName), 32)) "lastChild"
from ri
group by refTbCreator, refTbName
order by 1 desc, 2 asc
;
x
select char(strip(creator) || '.' || strip(tbName), 20) "child",
char(strip(refTbCreator) || '.' || strip(refTbName), 20) "par",
relName
from sysibm.sysRels
where creator = 'A218545'
;