This is one of the most common questions in any Database forums. Let me show you a test case in Oracle database :
I want to search all the tables in a schema having value 'SCOTT' and I will print the TABLE_NAME and the COLUMN_NAME.
Version :
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
CORE 12.1.0.1.0 Production
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production
Test case :
SQL> set serveroutput on;
SQL> DECLARE
2 lcount NUMBER;
3 lquery VARCHAR2(200);
4 BEGIN
5 FOR data IN (SELECT *
6 FROM user_tab_columns) LOOP
7 lquery := 'select count(*) from '
8 ||data.table_name
9 ||' where '
10 ||data.column_name
11 ||' like ''%SCOTT%''';
12
13 EXECUTE IMMEDIATE lquery INTO lcount;
14
15 IF lcount > 0 THEN
16 dbms_output.Put_line(data.column_name
17 ||'-----'
18 ||data.table_name);
19 END IF;
20 END LOOP;
21 END;
22 /
ENAME-----EMP
PL/SQL procedure successfully completed.
SQL>
So you have the output as COLUMN_NAME --> ENAME and TABLE_NAME --> EMP that has the value 'SCOTT'.
Clarification as requested by a member :
SQL> CREATE TABLE t AS
2 SELECT 'SCOTT' new_ename
3 FROM dual;
Table created.
SQL>
SQL> DECLARE
2 lcount NUMBER;
3 lquery VARCHAR2(200);
4 BEGIN
5 FOR data IN (SELECT *
6 FROM user_tab_columns) LOOP
7 lquery := 'select count(*) from '
8 ||data.table_name
9 ||' where '
10 ||data.column_name
11 ||' like ''%SCOTT%''';
12
13 EXECUTE IMMEDIATE lquery INTO lcount;
14
15 IF lcount > 0 THEN
16 dbms_output.Put_line(data.column_name
17 ||'-----'
18 ||data.table_name);
19 END IF;
20 END LOOP;
21 END;
22 /
NEW_ENAME-----T
ENAME-----EMP
PL/SQL procedure successfully completed.
SQL>
So, now you can see the output as required.