【发布时间】:2015-02-03 12:36:58
【问题描述】:
不仅仅是一个问题,它是一个信息共享帖子。
我今天遇到了一种情况,我需要在应用程序的整个数据库中查找一个问题,但不知道它属于哪个表/列。
以下是我编写并用于帮助我提出建议的 PL/SQL 块。希望它可以帮助其他有类似要求的人。
Declare
i NUMBER := 0;
counter_intable NUMBER :=0;
BEGIN
FOR rec IN (
select
'select count(*) ' ||
' from '||table_name||
' where '||column_name||' like''%732-851%'' ' as sql_command
from user_tab_columns
where data_type='VARCHAR2'
)
LOOP
execute immediate rec.sql_command into counter_intable;
IF counter_intable != 0 THEN
i := i + 1;
DBMS_OUTPUT.put_line ('Match found using command ::' || rec.sql_command);
DBMS_OUTPUT.put_line ('count ::' || counter_intable);
END IF;
END LOOP;
DBMS_OUTPUT.put_line ('total commands matched :: ' || i);
END;
将您的字符串替换为代码块中 732-851 的位置
【问题讨论】:
-
将您的 PL/SQL 块的性能与我的答案进行比较。
-
一个非常相似的解决方案已经发布为this question的答案。
-
呃!我忘记了,几天前我什至在此处添加了相同的答案。我没有看到具体问题,不确定是否应该删除我的答案。
-
我们有一个非常庞大的数据库,容量约为 2.5 TB,PL/SQL 块在 SQL 语句之前完成。
-
Hay Alex,希望我昨天能找到它,这会节省我一些时间和精力,因为我不是 DBA,不得不在互联网上一次又一次地查找语法和其他详细信息。 :( 感谢分享。
标签: database oracle search plsql oracle-sqldeveloper