从模式中查找列和值扫描所有 table in oracle
Find a column and a value from a schema scan all the table in oracle
我正在尝试从架构中查找列 (ABC
) 及其值 1234
,基本上我需要检查是否 ABC 和此列 1234 中的值存在于映射到 ABC 的任何其他 table 中,我尝试进行最多的搜索有效的方法,但它会花费大量时间并且无法检索到所需的结果
但查询根本不是结果它是 运行 运行...
如果在 set Serveroutput
上出现缓冲区溢出,您可以将输出写入文件,否则这应该 do.Output 将包含具有 'ABC'
列的所有表,并且相应的计数显示计数将 ABC
列值记录为 1234
.
SET SERVEROUTPUT ON 100000
DECLARE
lv_count number(10):=0;
l_str varchar2 (1000);
BEGIN
FOR V1 IN
(select distinct table_name
from dba_tab_columns
where column_name = 'ABC')
LOOP
BEGIN
lv_query := ' select count(*) from '||v1.table_name||' where ABC =1234';
EXECUTE IMMEDIATE lv_query INTO lv_count;
dbms_output.put_line(v1.table_name||' --> '||lv_count);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('OTHERS EXCEPTION '||v1.table_name||' ERRCODE '||SQLERRM||' '||SUBSTR(SQLCODE,1,200));
END;
END LOOP;
END;
要查找具有 column_name ABC 的所有表,应该执行如下简单查询。
select table_name
from dba_tab_columns
where column_name = UPPER('ABC');
PS:元数据表(dba_Tab_columns)以大写形式存储 column_name,以避免任何大小写问题,将文字的大小写转换为大写。
PL/SQL 块中的第二个查询,
SET SERVEROUTPUT ON 100000
DECLARE
lv_count number(10):=0;
l_str varchar2 (1000);
lv_col_name varchar2(255) :='ABC';
BEGIN
FOR V1 IN
(select distinct table_name
from dba_tab_columns
where column_name = lv_col_name)
LOOP
dbms_output.put_line(lv_col_name||' '||v1.table_name);
END LOOP;
END;
我正在尝试从架构中查找列 (ABC
) 及其值 1234
,基本上我需要检查是否 ABC 和此列 1234 中的值存在于映射到 ABC 的任何其他 table 中,我尝试进行最多的搜索有效的方法,但它会花费大量时间并且无法检索到所需的结果
但查询根本不是结果它是 运行 运行...
如果在 set Serveroutput
上出现缓冲区溢出,您可以将输出写入文件,否则这应该 do.Output 将包含具有 'ABC'
列的所有表,并且相应的计数显示计数将 ABC
列值记录为 1234
.
SET SERVEROUTPUT ON 100000
DECLARE
lv_count number(10):=0;
l_str varchar2 (1000);
BEGIN
FOR V1 IN
(select distinct table_name
from dba_tab_columns
where column_name = 'ABC')
LOOP
BEGIN
lv_query := ' select count(*) from '||v1.table_name||' where ABC =1234';
EXECUTE IMMEDIATE lv_query INTO lv_count;
dbms_output.put_line(v1.table_name||' --> '||lv_count);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('OTHERS EXCEPTION '||v1.table_name||' ERRCODE '||SQLERRM||' '||SUBSTR(SQLCODE,1,200));
END;
END LOOP;
END;
要查找具有 column_name ABC 的所有表,应该执行如下简单查询。
select table_name
from dba_tab_columns
where column_name = UPPER('ABC');
PS:元数据表(dba_Tab_columns)以大写形式存储 column_name,以避免任何大小写问题,将文字的大小写转换为大写。
PL/SQL 块中的第二个查询,
SET SERVEROUTPUT ON 100000
DECLARE
lv_count number(10):=0;
l_str varchar2 (1000);
lv_col_name varchar2(255) :='ABC';
BEGIN
FOR V1 IN
(select distinct table_name
from dba_tab_columns
where column_name = lv_col_name)
LOOP
dbms_output.put_line(lv_col_name||' '||v1.table_name);
END LOOP;
END;