Gru*_*umP 7 sql oracle stored-procedures oracle11g
我有一个11G的数据库.我需要检查一些存储过程,看看它们是否使用特定的表.(前端和后端sps)我可以完全访问数据库,并且还有一个存储在TFS上的项目所有单个sp的副本.
我想要一种方法来生成与此特定表交互的所有sp的列表.我不熟悉如何寻找这些.任何人都可以建议获得这些数据最合理的方式吗?
谢谢.
Inc*_*ito 14
如果我理解正确,你试图table在所有存储过程中搜索a的出现.在这种情况下,您可以使用此查询:
搜索SP架构中的事件时
SELECT * FROM user_source WHERE text LIKE '%tab_name%';
Run Code Online (Sandbox Code Playgroud)
搜索SP所有模式中的事件时
SELECT * FROM all_source WHERE text LIKE '%tab_name%';
Run Code Online (Sandbox Code Playgroud)
我使用 PLSQL Developer,您可以在其中浏览表(或其他对象),并查看“引用者”,以查看引用该表的所有对象。这就是最简单的事情。我可以想象其他工具也有类似的功能。
我不知道 Oracle 中是否可以轻松获得这些预先解析的信息,但我可以想象,因为这些工具似乎运行得相当快。
All_DEPENDENCIES这些信息可以在这些工具可能使用的视图中找到。
存储过程的源码可以在USER_SOURCE(或ALL_SOURCE)视图中找到,其中存储了整个数据库的结构。然而,从那里获取和解析代码会非常麻烦。
小智 5
有两件事,在PL/SQL中有一些变化需要重新编译pl/sql对象,其他则没有.要查看第一个,您可以ALL_DEPENDENCIES查看.或DBA_如果您愿意.
如果您只想查看表名在所有pl/sql代码中的显示位置,那么对表的更改是否需要重新编译,您可以使用ALL_SOURCEupper和%,但可能需要一些时间.