如果我不知道具体的架构\表\列,请告诉我如何找到 Oracle 数据库中的所有值?
我正在撰写技术档案,例如,我想知道值“Cat”在哪个表和哪个列中。我怎样才能做到这一点?遍历所有列和表的 python 回圈需要很长时间....
uj5u.com热心网友回复:
好吧,如果您想扫描所有表和所有列,任何事情都将花费很长时间(除非它是 Scott 的小型模式)。
无论如何:您将需要动态 SQL。这是一个示例:我正在搜索CHAR
我自己的架构中的所有类似资料型别的列(第 8 行),寻找KING
(第 15 行):
SQL> DECLARE
2 l_str VARCHAR2 (500);
3 l_cnt NUMBER := 0;
4 BEGIN
5 FOR cur_r IN (SELECT u.table_name, u.column_name
6 FROM user_tab_columns u JOIN user_tables t
7 ON u.table_name = t.table_name
8 WHERE u.data_type LIKE '%CHAR%')
9 LOOP
10 l_str :=
11 'SELECT COUNT(*) FROM '
12 || cur_r.table_name
13 || ' WHERE '
14 || cur_r.column_name
15 || ' like (''%KING%'')';
16
17 EXECUTE IMMEDIATE (l_str)
18 INTO l_cnt;
19
20 IF l_cnt > 0
21 THEN
22 DBMS_OUTPUT.put_line (l_cnt || ' : ' || cur_r.table_name);
23 END IF;
24 END LOOP;
25 END;
26 /
1 : TABLE22
1 : EMP
PL/SQL procedure successfully completed.
SQL>
结果表明KING
出现在两个表 (TABLE22
和EMP
) 中,每个表中出现一次。
0 评论