我正在尝试在整个 Oracle 数据库中查找特定字符串。
我已经按照此处另一个主题中的示例进行了操作(在所有表中的所有字段中搜索特定值 (Oracle) https://stackoverflow.com/questions/208493/search-all-fields-in-all-tables-for-a-specific-value-oracle),并且当字符串是列中的整个值时,它就可以工作。但我需要搜索字符串作为列的一部分。
例如,如果我搜索“Alert”,它应该返回所有带有“Alert”的列以及带有“Alert_QB”的所有列
这是目前的查询:
DECLARE
match_count INTEGER;
BEGIN
FOR t IN (SELECT owner, table_name, column_name
FROM all_tab_columns
WHERE data_type LIKE '%CHAR%') LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
' WHERE '||t.column_name||' = :1'
INTO match_count
USING 'ALERT';
EXCEPTION when others then
null;
end;
IF match_count > 0 THEN
dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count );
END IF;
END LOOP;
END;
/
我认为它接近“使用‘警报’;”我需要添加一些内容,但我不知道什么。
Thanks
将其更改为
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
' WHERE '||t.column_name||' like :1'
INTO match_count
USING '%ALERT%';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)