use*_*578 0 sql oracle plsql stored-procedures
我必须找出现有的PL SQL包中要插入或更新到其中的表的列表。我开始分析该软件包。令人担忧的是,程序包代码在数千行代码中运行,并依次调用许多其他程序包。另外,代码不是我写的。由于它是开发环境,因此无法运行AWR报告。
启动事务后,是否有办法将插入/更新的表插入其中?是否可以编写触发器来满足我的要求?
-- plain
select *
from dba_dependencies
where name = 'PACKAGE_NAME' and owner = 'PACKAGE_OWNER'
and type in ('PACKAGE', 'PACKAGE BODY') and referenced_type = 'TABLE';
-- hierarchy
select distinct referenced_owner, referenced_name, referenced_type, referenced_link_name
from dba_dependencies
where referenced_type = 'TABLE'
start with name = 'PACKAGE_NAME' and owner = 'PACKAGE_OWNER'
and type in ('PACKAGE', 'PACKAGE BODY')
connect by nocycle prior referenced_name = name and prior referenced_owner = owner
and replace(prior referenced_type, 'PACKAGE BODY', 'PACKAGE') = replace(type, 'PACKAGE BODY', 'PACKAGE')
and referenced_owner not in ('SYS', 'SYSTEM', 'OUTLN' , 'AUDSYS')
order by 1, 2, 3;
Run Code Online (Sandbox Code Playgroud)