oracle - Oracle中存储过程的object_id存储在哪里?

标签 oracle plsql

我是PL/SQL的初学者,所以我不知道这个问题是否有意义。我试图找出 Oracle 11g 中包下(而不是模式下)存储过程的 object_id。我尝试查询以下系统表/ View ,我认为它们应该包含 SP 的 object_Id。

  1. 所有程序
  2. User_obects

All_procedures View 确实包含我正在查找的 SP 的名称,但它仅包含包的对象 ID。我想查找Package下存储过程的object_id的原因是:

  1. 我交谈过的一些 PL/SQL 程序员告诉我,包下的 SP/函数不被视为对象。我想知道为什么。

  2. 我想知道这个SP在同一个包下有多少个其他SP被引用。我希望 public_dependency View 包含此映射,除非有人告诉我这是错误的 View 。

  3. 如果 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/

相关文章:

java - 多个 XML 文件验证的自动化

oracle - 从交叉点/连接表中选择

SQL Group By function(column) - 现在无法选择该列

java - 如何从 HTML Web 应用程序查询远程 Oracle 数据库?

sql - 如何检查分配给 oracle 数据库中模式、角色的对象的权限(DDL、DML、DCL)?

sql - DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是什么?它们可以回滚吗?

Oracle 删除 XMLTYPE 中的多个节点

sql - 可更新 View (Oracle)

oracle - dbms_output.put() 的缓冲方式是否与 dbms_output.put_line() 不同?

sql - 当PL SQL匿名 block 完成时,为什么没有输出?