Oracle 数据库的简单 SQL 查询
Posted
技术标签:
【中文标题】Oracle 数据库的简单 SQL 查询【英文标题】:A simple SQL query for the Oracle database 【发布时间】:2021-08-17 15:35:47 【问题描述】:我正在寻找一个简单的 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 【参考方案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 的另一个原因,除非绝对必要。以上是关于Oracle 数据库的简单 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章