我想找到所有引用我的对象的对象。
我想出了这个查询,这是获取对对象的所有引用的最佳方法吗?(我知道这不包括约束,我单独处理)
直接引用对象
SELECT object_id, owner, object_name, object_type
FROM sys.DBA_OBJECTS
WHERE object_id IN (select object_id
from public_dependency
where REFERENCED_OBJECT_ID = :id_object)
ORDER BY object_name
另外,在互联网上,我遇到了如下查询。
对对象的直接和间接引用
SELECT object_id, owner, object_name, object_type
FROM sys.DBA_OBJECTS
WHERE object_id IN (SELECT object_id
FROM public_dependency
CONNECT BY PRIOR object_id = referenced_object_id
START WITH referenced_object_id = :objectId)
但是,如果我的理解是正确的,则此查询不仅返回直接引用,还返回间接依赖。
例如,如果我想要 object_A 的引用。如果 object_B 引用了它,并且 object_C 引用了 object_B。此查询将返回 object_B 和 object_C 作为对 object_A 的引用。我对吗?
在与一些在 Oracle 方面比我有更多经验的人交谈后,他们告诉我我的理解是正确的。
此查询返回对对象的引用(约束除外)