2017-08-04 80 views
0

如何检查某个表的特定列是否在Oracle中的其他对象中使用?例如,我有一个表EMPLOYEE其中有一列奖金。我需要检查此表的这一列是否已被数据库中的其他任何对象使用,如查看等。查看数据库中某个表的某列是否已被使用

+0

看(https://stackoverflow.com/questions/4852993/query-to -search-all-packages-for-table-and-or-column),也许这就是你想要的 – I3rutt

+1

你尝试过什么吗?对于函数,proc或包等程序单元,您可以查询all_source/dba_source/user_source,但这可能会非常棘手,因为程序可能不会明确引用列名。可以在all_constraints中检查引用(外键关系)中列的使用。 – GurV

回答

0

你可以试试下面的SQL来检查表和列在这[链接]对象定义中使用的

SELECT 1 
    FROM all_source 
WHERE type IN ('PROCEDURE','PACKAGE BODY','FUNCTION') 
    AND text LIKE '%EMPLOYEE%' 
    AND text LIKE '%BONUS%'; 
+0

该方法只能识别表名和列名在同一行的情况。 – Kirby

+0

或者可以用来代替 –

相关问题