【问题标题】:A simple SQL query for the Oracle databaseOracle 数据库的简单 SQL 查询
【发布时间】:2023-03-07 19:30:01
【问题描述】:

我正在寻找一个简单的 Oracle SQL 查询: 我想知道在 Oracle 数据库中的哪些包中使用了特定的表。 例如

select * 
from   abc
where  table.name = 'XYZ'

输出应该显示这个表的所有包。

【问题讨论】:

  • 这能回答你的问题吗? How to see PL/SQL Stored Function body in Oracle
  • @user7294900 - 不,该线程没有正确回答这个 Seeker 的问题。更好的答案是提到 USER_DEPENDENCIES 作为第一个停靠港。如果我知道(或怀疑)代码库使用了动态 SQL,我只会求助于 USER_SOURCE

标签: sql oracle plsql


【解决方案1】:

试试这个:

SELECT *
FROM   ALL_DEPENDENCIES
WHERE  referenced_name = 'YOUR_TABLE_NAME'
AND    owner           = 'YOUR_USER'
and type = 'PACKAGE BODY';

【讨论】:

  • 我会将其扩展为“AND TYPE IN ('PACKAGE BODY', 'PROCEDURE'”。我知道 OP 专门针对 'packages' 说,但我怀疑他忽略了以下程序的可能性不在包中。当然,他也忽略了那些(糟糕地)在运行时使用动态 sql 来解析表名的包和过程...... :-)
  • @EdStevens - 如果我们将标准扩展到独立单元,我们也应该包括“功能”。另外值得注意的是,有时包规范可能会使用%rowtype 声明引用一个表,而其主体根本不使用该表。关于动态 SQL 的观点很好。这只是避免使用动态 SQL 的另一个原因,除非绝对必要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
相关资源
最近更新 更多