我是 PL/SQL 的初学者,所以我不知道这个问题是否有意义。我试图找出 Oracle 11g 中包下(而不是模式下)的存储过程的 object_id。我尝试查询以下我认为应该包含 SP 的 object_Id 的系统表/视图。
- All_procedures
- 用户对象
All_procedures 视图确实包含我正在寻找的 SP 的名称,但它只包含包的对象 ID。我想在一个包下找到存储过程的 object_id 的原因是:
与我交谈过的一些 PL/SQL 程序员告诉我,包下的 SP/Function 不被视为对象。我想明白为什么。
我想知道,这个 SP 在同一个包下有多少其他 SP 被引用。我希望 public_dependency 视图包含这个映射,除非有人告诉我这是错误的视图。
如果 SP/Function 未标识为包下的对象,那么如何获取引用特定 SP 的 SP 列表?
我在 Stackoverflow 中发布了另一个问题,这使我找到了链接如何以编程方式识别存储过程的依赖项?. 但是这篇文章中提到的脚本对我没有帮助,因为 user_objects 在包下没有存储过程的任何条目。它只有架构下的 SP。