用一个SQL不会做,可以用程序做

解决方案 »

  1.   

    用一个SQL不会做,可以用程序做不用软件这么复杂吧,写个过程呗~~~~~嘿嘿
      

  2.   

    存储过程create or replace procedure simo_pro(column_name in varchar2,msg out varchar2)
    as 
    begin
      declare 
      space_cnt number;
      s_sql varchar2(1024);
      cursor cur(clname varchar2) is 
        select atc.TABLE_NAME from all_tab_columns atc 
      inner join all_tables att on att.TABLE_NAME = atc.TABLE_NAME
      where atc.OWNER = 'SEC_SRTP'
      and atc.COLUMN_NAME = upper(clname);
      row_cur cur%ROWTYPE;
      begin
        open cur(column_name);
         loop
          fetch cur into row_cur;
          exit when cur%NotFound;
          --dbms_output.put_line(row_cur.table_name);
          s_sql := 'select count(*) from '||row_cur.table_name||' where '
                ||column_name||' like ''% %''';
          execute immediate s_sql into space_cnt;
          if space_cnt > 0 then 
            dbms_output.put_line(row_cur.table_name);--打印出当前字段含有空格的表名
          end if;
        end loop;
        close cur;
        msg := '查询成功';
      end;
      EXCEPTION
      WHEN OTHERS THEN
        msg := '失败:' || SQLERRM;
        ROLLBACK;
        RETURN;
    end;
      

  3.   

    注意把存储过程中的where atc.OWNER = 'SEC_SRTP'
    改我你的方案,注意大写方案名。
      

  4.   

    你改了where atc.OWNER = 'SEC_SRTP' 中的SEC_SRTP改成你的方案名没有?
      

  5.   

    在传入数据column_name 输入你要查询的列名,如:aac003
      

  6.   


    都改过了,用户也改过了,传入数据column_name 也输入aac003了,不过点测试 直接就查询成功,也没有显示需要的值~~~
      

  7.   

    dbms_output输出你没有看过?
    你用pl/sql developer没,在测试的窗口上面有个DBMS_Output。