Oracle指定用户下的全局搜索
可以根据自己需要进行修改
declare
strSQL VARCHAR2(4000);
strUser varchar2(100);
strFind NVARCHAR2(500);
results number;
begin
--要搜索的用户
strUser := 'UserName';
--要搜索的值
strFind := 'abcdefg';
dbms_output.put_line('开始全局搜索值为:'||strFind||'的字段......');
--指定用户下所有字段(去掉视图)
for t in (select col.* from dba_tab_columns col inner join dba_tables tab on col.OWNER=tab.OWNER and col.TABLE_NAME=tab.TABLE_NAME
where tab.owner = upper(strUser) and DATA_TYPE !='BLOB' AND DATA_TYPE !='CLOB' and DATA_TYPE !='LONG') loop
results := 0;
strSQL := 'select count(1) from '||t.table_name||' where trim('||t.column_name||')='||q'[trim(']'||strFind||q'[')]';
execute immediate strSQL into results;
if (results>0) then
dbms_output.put_line(strSQL||q'[;--]'||results);
end if;
end loop;
dbms_output.put_line('搜索结束');
end;