我必须编写一个查询来查找数据库中具有特定值的所有表。我想知道值的位置。我有一个包含4000个表的数据库。所以我想找到特定的表找到价值。我有价值......但是我不知道表名。这可能吗?
感谢你
答案 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会显示它们 我希望能帮到你。