create procedure sp is
begin
dbms_output.put_line(to_char(sysdate,'yyyymmdd hh24:mi:ss'));    
  insert into ...
    commit;
dbms_output.put_line(to_char(sysdate,'yyyymmdd hh24:mi:ss'));  
   update ..
    ....;
   commit;
dbms_output.put_line(to_char(sysdate,'yyyymmdd hh24:mi:ss'));
end;
当时是为了知道每段sql的执行时间,所以就在过程中用了dbms_output.put_line,
在pl_dev中执行该过程后,就能在output那页看到每段sql的执行时间。
现在我在job中定时执行该过程,就看不到每段sql的执行时间了,我现在不关心执行时间,也不要知道时间
现在我有疑问的是:
dbms_output.put_line在JOB中执行时对该过程的UPDATE,INSERT,DELETE会有影响吗?

解决方案 »

  1.   

    我觉得有一丁点影响,但基本可以忽略不计。
    你的JOB的那个Session,由于并未开启:set serveroutput on, 所以是没有输出的
      

  2.   

    有影响,对语句执行时间和效率的影响。就象你在java中使用log4j打日志一样。
    输出日志是要花费系统时间的。
      

  3.   

    会有影响的  如果你的dml操作是实时的 那影响会比较大
    建议把dbms_output都去掉吧
      

  4.   

    我的dml操作不是实时的
    是在job中执行,其实也看不到输出。
    这样看来这影响就可忽略不计??
      

  5.   

    不修改代码的前提下,
    自己感觉
    在pl_dev中执行该过程
    与 在job 中执行该过程,
    时间几乎一样,
    只是一个能看到输出,另一个看不到。
      

  6.   

    既然是在job中,看不到输出,就把它去掉
    可以建一张日志表,过程执行时往日志表里插入执行情况的记录