代码基本如下,现在的问题是,我在pl/sql developer发布这段代码时,并不是执行完DELETE from new_part_tab;,马上就显示“清空临时表完成!”,而是在整个程序运行完后,程序中的三个提示一次都出来,找不到原因啊
set serveroutput on
begin
--刷新单位
dbms_output.put_line('现在刷新单位,保证NC和IFS一致!');
INVENTORY_PART_API.Refresh_NC_Unit(1);
--先清空临时表
DELETE from new_part_tab;
COMMIT;
dbms_output.put_line('清空临时表完成!');--开始插入临时表
FOR temp_all_ IN get_all_nc_part_rec LOOP
  INSERT
        INTO new_part_tab (
           inventory_id,    
           part_no     ,    
           description ,    
           type_designation,
           dim_quality     ,
           drawing_no      ,
           unit_meas       ,
           unit_name       ,
           qty_onhand      ,
           rowversion      
           )
        VALUES (
           temp_all_.inventory_id     ,
           temp_all_.part_no          ,
           temp_all_.description      ,
           temp_all_.type_designation ,
           temp_all_.dim_quality      ,
           temp_all_.drawing_no       ,
           temp_all_.unit_meas        ,
           temp_all_.unit_name        ,
           temp_all_.qty_onhand       ,
           sysdate        
         );
        COMMIT;
 END LOOP;
dbms_output.put_line('NC库存件插入临时表完成!');
end

解决方案 »

  1.   

    用pl/sql develop的test script~ (方法是: New -> Test Windows)
    写完脚本后,可以一步步执行,并且随时可以看到output信息.(即使不打set serveroutput on也可看到)
      

  2.   

    我这个脚本是给用户用的,那几个输出只是让用户知道现在在做什么,让用户在调试环境做显然不行,刚才查了资料说,所有的dbms_output.put_line只能在整个程序提交后一次打出来,而不能执行完相应的操作就出相应的提示,那有没有别的函数可以实现这个需求啊。
      

  3.   

    原因很简单:dbms_output.put_line并不能和代码执行同步显示
    解决方法:1、把需要输出的信息写入一个测试表
    或者2、用spool把需要输出的信息加上时间戳保存到文件
      

  4.   

    dbms_output.put_line并不能和代码执行同步显示
    我的解决办法是:把dbms_output.put_line改为prompt