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 查询的主要内容,如果未能解决你的问题,请参考以下文章

Oracle简单查询限定查询数据的排序

如何优化 SQL 查询(Oracle 数据库)

如何查询oracle 数据库性能,sql资源占用

Oracle数据库 第二天

oraclesql条件语句?

SQL为王:oracle标量子查询和表连接改写