這個問題在這里已經有了答案: 在所有表中的所有欄位中搜索特定值(Oracle) 17 個答案 Oracle 在所有表的所有列中搜索字串 [重復] 1 個答案 Oracle資料庫在所有表中搜索字串,回傳行資料[重復] 1個回答 在 Oracle SQL Developer 中識別具有特定內容的表 [重復] 1 個答案 3 小時前關閉。
如果我不知道具體的架構\表\列,請告訴我如何找到 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) 中,每個表中出現一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414312.html
標籤:
