Oracle如何根据某个字段的值查询该字段在哪个表里,存储过程sql如下:

SET SERVEROUTPUT ON SIZE 100000

    DECLARE
      match_count INTEGER;
    BEGIN
      FOR t IN (SELECT owner, table_name, column_name
                  FROM all_tab_columns
                  WHERE owner <> 'SYS' and data_type LIKE '%CHAR%') LOOP

        EXECUTE IMMEDIATE
          'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
          ' WHERE '||t.column_name||' = :1'
          INTO match_count
          USING 'string to search here...';

        IF match_count > 0 THEN
          dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count );
        END IF;

      END LOOP;

    END;
    /

这里需要改或者可以改的地方:

1. 如果明确的知道schema或者owner是谁,可以直接把下面替换为具体的owner,否则就是整个所有schema扫描:

WHERE owner <> 'SYS' 替换为 WHERE owner = 'ENTER_USERNAME_HERE'

2. data_type LIKE '%CHAR%' 替换为其他类型

3. USING 'string to search here...'; 这里输入你要查找的字符串值

******** 注意 **********

oracle的对大小写敏感的

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐