大家好!我在开发中习惯把业务逻辑用oracle的包实现。
那么,我在修改了一个包里面的函数之后,我怎么才能知道这个函数被哪些对象引用了?
如果是全局的函数或者存储过程,select * from user_dependencies;就可以查看。
但是如果是下面这种情况,如何能查出来呢?
比如两个包,A包里面有函数funA,B包里面有函数funB,funB里面调用了funA。
此时,如果我修改了funA,我怎么才能知道还影响到了funB?select * from user_dependencies;我也只能查到是B包受影响,但是不能精确到funB。而如果查询user_source,确只能查到位于包的哪一行。
不知道大伙有没有比较好的办法
那么,我在修改了一个包里面的函数之后,我怎么才能知道这个函数被哪些对象引用了?
如果是全局的函数或者存储过程,select * from user_dependencies;就可以查看。
但是如果是下面这种情况,如何能查出来呢?
比如两个包,A包里面有函数funA,B包里面有函数funB,funB里面调用了funA。
此时,如果我修改了funA,我怎么才能知道还影响到了funB?select * from user_dependencies;我也只能查到是B包受影响,但是不能精确到funB。而如果查询user_source,确只能查到位于包的哪一行。
不知道大伙有没有比较好的办法
select name,type,line,regexp_replace(upper(text), '^.*FUNCTION\s+(\w+).*$', '\1') as "Function name" from user_source
where (name,type) in (
select name,type from user_source
where upper(text) like '%PKGA.FUNA%')
and upper(text) like '%FUNCTION%';试一下这个
where (name,type) in (
select name,type from user_source
where upper(text) like '%PKGA.FUNA%')
and upper(text) like '%FUNCTION%';