Stored procedures reverse engineering

后端 未结 8 1559
长发绾君心
长发绾君心 2020-12-16 00:58

We\'re having problem with a huge number of legacy stored procedures at work. Do you guys recommend any tool the can help better understand those procedures? Some kind of re

8条回答
  •  轮回少年
    2020-12-16 01:30

    This isn't real deep or thorough, but I think that if you're using MS SQL Server or Oracle (Perhaps Nigel can help with a PL-SQL sample)...Nigel is on to something . This only goes 3 dependencies deep, but could be modified to go however deep you need. It's not the prettiest thing...but it's functional...

    select 
        so.name + case when so.xtype='P' then ' (Stored Proc)' when so.xtype='U' then ' (Table)' when so.xtype='V' then ' (View)' else ' (Unknown)' end as EntityName, 
        so2.name + case when so2.xtype='P' then ' (Stored Proc)' when so2.xtype='U' then ' (Table)' when so2.xtype='V' then ' (View)' else ' (Unknown)' end as FirstDependancy,
        so3.name + case when so3.xtype='P' then ' (Stored Proc)' when so3.xtype='U' then ' (Table)' when so3.xtype='V' then ' (View)' else ' (Unknown)' end as SecondDependancy,
        so4.name + case when so4.xtype='P' then ' (Stored Proc)' when so4.xtype='U' then ' (Table)' when so4.xtype='V' then ' (View)' else ' (Unknown)' end as ThirdDependancy
    from 
      sysdepends sd 
        inner join sysobjects as so on sd.id=so.id 
        left join sysobjects as so2 on sd.depid=so2.id
        left join sysdepends as sd2 on so2.id=sd2.id and so2.xtype not in ('S','PK','D')
        left join sysobjects as so3 on sd2.depid=so3.id and so3.xtype not in ('S','PK','D')
        left join sysdepends as sd3 on so3.id=sd3.id and so3.xtype not in ('S','PK','D')
        left join sysobjects as so4 on sd3.depid=so4.id and so4.xtype not in ('S','PK','D')
    where so.xtype = 'P' and left(so.name,2)<>'dt'
    group by so.name, so2.name, so3.name, so4.name, so.xtype, so2.xtype, so3.xtype, so4.xtype
    

提交回复
热议问题