大家好!我在开发中习惯把业务逻辑用oracle的包实现。
那么,我在修改了一个包里面的函数之后,我怎么才能知道这个函数被哪些对象引用了?
如果是全局的函数或者存储过程,select * from user_dependencies;就可以查看。
但是如果是下面这种情况,如何能查出来呢?
比如两个包,A包里面有函数funA,B包里面有函数funB,funB里面调用了funA。
此时,如果我修改了funA,我怎么才能知道还影响到了funB?select * from user_dependencies;我也只能查到是B包受影响,但是不能精确到funB。而如果查询user_source,确只能查到位于包的哪一行。
不知道大伙有没有比较好的办法

解决方案 »

  1.   

    在pl/sql developer 左边的objects树型结构中展可某对象可以查看referenced by...
      

  2.   


    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%';试一下这个
      

  3.   

    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%';
      

  4.   

    这里的数据,实际上是从user_dependencies或者dba_dependencies中查出来的,不能精确到包里面的函数