我在oracle中有一个主程序,它调用它里面的许多程序 . 这些内部过程还调用其中的函数和过程 . 这持续到很多层次 . 例如:
Proc A
call c
call d
end............
proc c
call e
call f
end ....................
proc e
call j
call h
end
j调用一些内部调用另一个的过程,依此类推 . 这个循环继续 .
我想找到执行main api时在运行时调用的所有过程的名称 . 是否可以使用toad找到所有这些?有没有这样做的工具?
5 回答
这是一个如何以递归方式传送
user_dependencies
的示例:看演示:----> http://www.sqlfiddle.com/#!4/9ca2a/1
您可以使用oracle中的dba_dependencies数据字典视图来检查主过程中使用的过程/函数的名称 . 但是,为了在运行时进行检查,您可能必须编写DBMS_OUTPUT.PUT_LINE语句,或者可以创建audit_log_table,您可以在其中插入过程/函数的名称 .
在Toad的Schema Browser中单击您正在执行的主程序,在右侧面板上,有一个名为 Deps (Used By) 的选项卡 . 在此下,您将找到正在使用的所有对象 .
或者,您可以执行以下操作,列出所有相关对象
我使用Oracle AUDIT 来跟踪客户端应用程序使用哪些函数/过程/包(从客户端调用它们) . 您可以使用它指定特定的plsql语句名称,在您的情况下是您的主过程名称,并进一步跟踪它们 . 我认为这可能会有所帮助 .
没有简单的元数据查询可以提供您想要的内容 . 然而,在某些领域你可以自己研究,找到你需要的东西 .
http://stevenfeuersteinonplsql.blogspot.com/2018/07/the-plscope-resource-center.html
https://sqldev.tech/clearsql8_subscription
http://www.oracle.com/partners/campaign/o25plsql-093886.html
祝好运 . 凯文