找到包含一个用户指定值的表的名称

时间:2017-12-19 16:01:27

标签: sql oracle

对于用户(用户A)我有几个表(table1,table2,...,表n)具有相同的字段(field1,field2,field3,field4),我想知道的名称包含字段4的值x的表(其中field4 = x)

1 个答案:

答案 0 :(得分:0)

举例来说:用户SCOTT(标准Oracle用户/架构)有两个表EMPDEPT,两个表都有一列DEPTNO。我想在列:x中找到哪个表(或多个表)具有值DEPTNO。 (注意我如何允许我搜索的值是绑定变量 - 所以我可以将查询重用于不同的值。)我只对识别表名感兴趣,所以我停止搜索一旦找到值,就在每个表中。

select  'EMP' as table_name
  from  scott.emp
  where deptno = :x and rownum = 1
union all
select  'DEPT' as table_name
  from  scott.dept
  where deptno = :x and rownum = 1
---  etc.  (union all for all tables of interest)

请注意,表格都具有相同列的事实无关紧要。每个表必须有一列可能包含值:x(假设这一列在所有表中具有相同的数据类型)。

另请注意,运行此查询的用户必须具有SCOTT模式中表的权限(显然!)