我有个存储过程包,有近7000行,30多个存储过程。
我上司要求我统计一下每个存储过程用了哪些表..
请问有什么快捷的方法吗

解决方案 »

  1.   

    SELECT u1.name, u1.type, u1.referenced_name
      FROM user_dependencies u1
     WHERE EXISTS ( SELECT u2.object_name FROM user_objects u2 WHERE object_type='TABLE' AND u2.object_name=u1.referenced_name );
     ORDER BY u1.name,u1.referenced_name;
      

  2.   

    SELECT u1.name, u1.type, 
           u1.referenced_name -- 引用的表
      FROM user_dependencies u1
     WHERE u1.type='PROCEDURE'  -- 存储过程
       AND EXISTS ( SELECT u2.object_name 
      FROM user_objects u2 
     WHERE object_type='TABLE' -- 引用的表
       AND u2.object_name=u1.referenced_name )
     ORDER BY u1.name,u1.referenced_name;
      

  3.   

    我有个存储过程包,有近7000行,30多个存储过程。
    我上司要求我统计一下每个存储过程用了哪些表..
    请问有什么快捷的方法吗column name for a30;
    column type for a12;
    column referenced_name for a30;
    SELECT u1.name, u1.type, 
           u1.referenced_name -- 引用的表
      FROM user_dependencies u1
     WHERE u1.type='PACKAGE'  -- 存储包
       AND EXISTS ( SELECT u2.object_name 
      FROM user_objects u2 
     WHERE object_type='TABLE' -- 引用的表
       AND u2.object_name=u1.referenced_name )
     ORDER BY u1.name,u1.referenced_name;
      

  4.   

    dba_source sql_txt like "%xxx%"
      

  5.   

    LZ要不衡量下,写个sql解析器要耗费的时间与人工解析要耗费的时间以及各自的成就感,嘻嘻