各位大侠,问题如下:我在oracle中建了个库,里面建了40几张表,我要全库查找内容包括“kkkkk”的表名和记录,如何做到。

解决方案 »

  1.   

    找表名的话 有视图 ALL_TABLES 
      

  2.   

    查表名可以通过user_tables 来查询
      

  3.   


    --表名
    SELECT * FROM USER_TABLES 
    WHERE LOWER(TABLE_NAME) LIKE '%kkkkk%'--记录的话,不好找了。
      

  4.   

    --查询当前用户
    SELECT * FROM USER_TABLES 
    WHERE LOWER(TABLE_NAME) LIKE '%kkkkk%'
    --查询所有用户
    SELECT * FROM DBA_TABLES 
    WHERE LOWER(TABLE_NAME) LIKE '%kkkkk%'
    还有,你所说的记录是什么意思?
      

  5.   

    楼主是 现在知道某个字段的值是'kkkkk' 想知道这个字段名和表名?
    这个好像......
      

  6.   


    对,就是知道字段内容是kkkkk,但不知道字段名和表名,所以要全库查询。
      

  7.   

    参照
    http://topic.csdn.net/u/20101110/15/06f0d4d1-f537-4124-b2f5-aabd98b2d0df.html
      

  8.   

    user_tables
    user_tab_cols
    注意里面的值大写
      

  9.   

    declare
       cursor cv_tables is select table_name,COLUMN_NAME from user_tab_columns t where Data_Type='CHAR' or Data_Type='VARCHAR2' or Data_Type='VARCHAR';
       v_sql long;
       v_num number;
       v_table_name varchar2(30);
       v_column_name varchar2(30);
       begin
        open cv_tables;
        loop
        fetch cv_tables into v_table_name,v_column_name;
        exit when cv_tables%notfound;
        v_sql:='select count(*) from '||v_table_name||'        where '||v_column_name||'='||'''kkkkk''' ;
        execute immediate v_sql into v_num;
        if v_num>=1 then
        dbms_output.put_line('table is '||v_table_name||' and column  is '||v_column_name);
        end if;
       end loop;
       end;
      /
    按照水哥的改的,他的思路很清晰
      

  10.   

    看以前发的http://topic.csdn.net/u/20101110/15/06f0d4d1-f537-4124-b2f5-aabd98b2d0df.html
      

  11.   

    有一个视图吧,ALL_TABLES ?
      

  12.   

    SELECT * FROM USER_TABLES 
    WHERE LOWER(TABLE_NAME) LIKE '%kkkkk%'