本帖最后由 swjia8315 于 2012-06-19 19:01:48 编辑

解决方案 »

  1.   

    ORA-00942: table or view does not exist
    表all_tab_columns你确认创建了不,还是创建到别的用户下了.你先select * from all_tab_columns,有没有报错.
      

  2.   

    或者是 这个表-MM_IN 不存在:.
      

  3.   

    你如果只查MM_IN这个用户下的表select table_name,column_name from all_tab_columns where data_type = 'NUMBER';
    换成
    select table_name,column_name from all_tab_columns where data_type = 'NUMBER' and owner='MM_IN' ;
    如果要查拥有权限的所有的表select table_name,column_name from all_tab_columns where data_type = 'NUMBER';
    改为
    select owner,table_name,column_name from all_tab_columns where data_type = 'NUMBER';
    然后
    v_sql := 'select count(*)  from MM_IN.'||v_column.table_name||' where '||v_column.column_name||'=12008';  
    改为
    v_sql := 'select count(*)  from '||v_column.owner||'.'||v_column.table_name||' where '||v_column.column_name||'=12008';  
      

  4.   

    应当是有一些表不是MM_IN下面的。
      

  5.   


    恩其实我的语句是这样子的,当时想简化一点没留意造成了误会,不好意思,我是要查询所有用户底下的表,就是报那个line 10的错误,不知为何
    declare
    v_const number(11,0) := 12008;
    v_sql varchar2(5000);
    v_count number(11,0);
    cursor c_column is 
    select owner,table_name,column_name from all_tab_columns where data_type = 'NUMBER' ;   
    begin
      for v_column in c_column loop
    v_sql := 'select count(*)  from '||v_column.owner||'.'||v_column.table_name||' where '||v_column.column_name||'='||v_const;  
        execute immediate v_sql into v_count;
        if v_count > 0 then
          insert into SYSTEM.asearch(owner_name,table_name,column_name) values (v_column.owner,v_column.table_name,v_column.column_name);  
        end if;
      end loop;
    commit;
    end;
    /