忘了在哪儿找到的了,但是确实很好用,输入需要查询的值,查询出这个值出现在哪个表中。

红字的TEST0418为数据库用户,value处填写需要查询的值,也可用like查询。

--oracle无穷解查询数据库中的所有数据
DECLARE
V_SQL VARCHAR2(2000);
V_COUNT NUMBER;
BEGIN 
FOR XX IN (SELECT  TABLE_NAME,COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER='TEST0418' ) LOOP 
BEGIN 
V_SQL:= 'SELECT COUNT(1) FROM TEST0418.'||XX.TABLE_NAME ||' WHERE '||XX.COLUMN_NAME||' = ''value'' '; /*LIKE ''%123%'' ';*/
EXECUTE IMMEDIATE V_SQL INTO V_COUNT;
IF(V_COUNT>=1) THEN 
DBMS_OUTPUT.PUT_LINE('SELECT TEST0418.'||XX.COLUMN_NAME ||' FROM '||XX.TABLE_NAME ||' WHERE '||XX.COLUMN_NAME||' = ''value'' '); /*LIKE ''%123%'' ');*/
END IF;
EXCEPTION 
WHEN OTHERS THEN NULL;
END;
END LOOP;
END;