以下是报错的过程:create or replace procedure Export_Jobs is  JobStr varchar2(1000);begin
  --dbms_output.enable(9999999);
  print('begin');  for t in (select job from dba_jobs)
  loop
    dbms_job.user_export(t.job, JobStr);
    print('  ' || JobStr);
  end loop;
  
  print('end;');
                 
end Export_Jobs; 之前试过加了句dbms_output.enable(9999999),但是也一样报错,请大家救救me -o-job只有10来个左右,JobStr保证装的下一个导出的SQL.

解决方案 »

  1.   

    将print改为DBMS_OUTPUT.PUT_LINE试试。
      

  2.   

    DBMS_OUTPUT.PUT_LINE也不行的,试过了.
      

  3.   

    for t in (select job from dba_jobs)
      loop
        dbms_job.user_export(t.job, JobStr);
        --print('  ' || JobStr);
        dbms_output.enable;
        dbms_output.put_line('  ' || JobStr);
      end loop;
      

  4.   

    to chanet:
    使用dbms_output.put_line的话,会提示"超出每行255个字符限制",所以我用了print.to wiler:
    也许有关系,不过怎么把JobStr里面的回车去掉呢? 我试过trim(chr(13) from JobStr)和replace(JobStr, chr(13), ' ')都不大行.
      

  5.   

    这样可否?SQL> var vx varchar2(1000);
    SQL> begin
      2    select lpad('test', 300, 'O') into :vx from dual;
      3  end;
      4  /PL/SQL 过程已成功完成。SQL> print vx;VX
    --------------------------------------------------------------------------------OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOtest
    SQL>
      

  6.   

    写个printf的函数,每255个字符换行输出。
    output一行最多255个字符,缓冲最大1M
      

  7.   

    我那里那个print是按255个字符一次来输出的了.曾经单步调试过,每一步打印都没出错,到了最后结束过程的时候,就出错了 -_- 报错信息同标题.
      

  8.   

    实在还不行,加上set linesize 2048或者更大试试。
    总有办法的。只是这样消耗会比较大。
    btw, 你的dba_jobs中的job最大长度是多少?
    先用select max(length(job)) from dba_jobs查一下试试。