我是PL/SQL的初学者,所以我不知道这个问题是否有意义。我试图找出 Oracle 11g 中包下(而不是模式下)存储过程的 object_id。我尝试查询以下系统表/ View ,我认为它们应该包含 SP 的 object_Id。
- 所有程序
- User_obects
All_procedures View 确实包含我正在查找的 SP 的名称,但它仅包含包的对象 ID。我想查找Package下存储过程的object_id的原因是:
我交谈过的一些 PL/SQL 程序员告诉我,包下的 SP/函数不被视为对象。我想知道为什么。
我想知道这个SP在同一个包下有多少个其他SP被引用。我希望 public_dependency View 包含此映射,除非有人告诉我这是错误的 View 。
如果 SP/函数未识别为包下的对象,那么如何获取引用特定 SP 的 SP 列表?
我在 Stackoverflow 中发布了另一个问题,这使我找到了链接 How do you programatically identify a stored procedure's dependencies? 。但这篇文章中提到的脚本对我没有帮助,因为 user_objects 包下没有任何存储过程的条目。它只有 Schema 下的 SP。
最佳答案
Some of the PL/SQL programmers I talked to tells me that the SPs/Functions under a package are not considered an object. I want to understand why.
oracle数据库中的包是模式单元,将逻辑上相关的对象(例如类型、变量、过程和函数)分组。它们被视为原子单元,如果一个包中的某个过程引用另一个包中的另一个过程,我们就会遇到第一个包本身引用第二个包的情况。因此,这里的最小对象是包本身,而不是包中的过程或类型或其他东西。
I want to find out, in how many other SPs under the same package does this SP get referred. I hope public_dependency view contains this mapping, unless someone tells me this is the wrong view.
我从未遇到过如何获取它的信息。如果引用在包内部,我认为包是独立的对象。
If SPs/Functions are not identified as Objects under a package, then how do I get the list of SPs that refers to a specific SP.?
您需要使用包含源代码的 View ,例如user_source/all_source/dba_source
关于oracle - Oracle中存储过程的object_id存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601280/