I am trying to identify all the tables and columns across Database schemas with a search pattern '@abc.de' , ideally this exercise is to
- identify the specific table and associated columns using email patterns (@abc.de)
- pickup that list and cross verify whether the email address are valid or not
unfortunately the point 1 is very difficult
upon searching and trying to find
Search All Fields In All Tables For A Specific Value (Oracle)
SQL CODE
SET SERVEROUTPUT ON
DECLARE
    l_cmd     VARCHAR2 (2000);
    l_found   INTEGER;
BEGIN
    FOR eachcol IN (  SELECT *
                        FROM all_tab_cols a
                       WHERE a.data_type = 'VARCHAR2'
                        AND owner = 'schema_name'
                    ORDER BY table_name, column_name)
    LOOP
        l_cmd   :=
               'select count(*) c from '
            || eachcol.owner
            || '.'
            || eachcol.table_name
            || ' where '
            || LOWER (eachcol.column_name)
            || q'[ LIKE '%@abc%.de%' AND ROWNUM = 1]';
        EXECUTE IMMEDIATE l_cmd INTO l_found;
        IF l_found > 0
        THEN
            DBMS_OUTPUT.put_line (
                   RPAD (eachcol.owner || '.' || eachcol.table_name || '.' || eachcol.column_name, 92)
                || ' may contain email addresses'
            );
        END IF;
    END LOOP;
EXCEPTION
    WHEN OTHERS
    THEN
        DBMS_OUTPUT.put_line (l_cmd);
        DBMS_OUTPUT.put_line (SQLERRM);
        RAISE;
END;
I am getting the below error
Error report -
ORA-00911: invalid character
ORA-06512: at line 35
00911. 00000 -  "invalid character"
*Cause:    identifiers may not start with any ASCII character other than
           letters and numbers.  $#_ are also allowed after the first
           character.  Identifiers enclosed by doublequotes may contain
           any character other than a doublequote.  Alternative quotes
           (q'#...#') cannot use spaces, tabs, or carriage returns as
           delimiters.  For all other contexts, consult the SQL Language
           Reference Manual.
Note : I have tried many options to fetch the email address but not getting the right query logic , any suggestions ?
 
    