如何编写查询以查找数据库中具有特定数据的所有表

时间:2016-12-15 11:35:16

标签: oracle

我必须编写一个查询来查找数据库中具有特定值的所有表。我想知道值的位置。我有一个包含4000个表的数据库。所以我想找到特定的表找到价值。我有价值......但是我不知道表名。这可能吗?

感谢你

1 个答案:

答案 0 :(得分:0)

您可以创建表格和表格名称,将数据内容插入到该表格中 创建一个表:

create table My_table (table_name varchar2(50), column_name varchar2(50));

以下查询将表名插入my_table,所有这些名称都包含您的数据:

declare
  l_cnt     varchar2(20);
  Query_str varchar2(100);
begin
  FOR i IN (SELECT o.object_Name, OBJECT_TYPE
              FROM user_objects o
             WHERE o.OBJECT_TYPE = 'TABLE') LOOP
    for j in (SELECT column_name
                FROM all_tab_cols
               WHERE table_name = i.object_name) loop

      Query_str := 'select count(*) from ' || i.object_name ||
                   ' where to_char(' || j.column_name || ') = ''[Your_data]''';
      execute immediate Query_str
        into l_cnt;
      if l_cnt > 0 then
        insert into my_table
          (table_name, column_name)
        values
          (i.object_name, j.column_name);
      end if;
    end loop;
  end loop;
end;

之后,如果任何表格包含您的数据,my_table会显示它们 我希望能帮到你。