【问题标题】:oracle forms PL/SQL loop with pauseoracle 形成带有暂停的 PL/SQL 循环
【发布时间】:2019-12-03 23:17:26
【问题描述】:

我需要您的帮助来创建循环,该循环将遍历行并从每一行创建 txt 文件参数。 使用我当前的代码,我无法再进一步记录,因为它太快了(至少我认为这是原因)。我想在每行之间添加两秒钟的暂停,但我不确定该怎么做。 感谢您的帮助!

PROCEDURE CREATE_TXT_FILE IS
out_file TEXT_IO.FILE_TYPE;
  tmp_file varchar2(100);
  out_str varchar2(100);    
  tmp_str  varchar2(100);
  data_str   varchar2(100); 

BEGIN
      go_block('Block1');
  FIRST_RECORD;
  LOOP


 TMP_FILE := 'C:\txt_files;'      ------directory
  TMP_FILE := TMP_FILE || 'test';                 ------document name



  begin
    out_file := TEXT_IO.FOPEN(tmp_file, 'W');
  exception
    WHEN OTHERS THEN
         bell;
         message('Can''t open file to write.' || tmp_file,acknowledge);
         raise form_trigger_failure;

  END;

 --parameters for text file



  data_str := :block1.column1 ||:block1.column2||:block1.column3||:block1.column4||;
  out_str := out_str || data_str;


  begin
    TEXT_IO.PUT_LINE(out_file, out_str);
  exception when others then
    message('Error to write string to output file. Export is aborted',acknowledge);
    raise form_trigger_failure;
  end;



  TEXT_IO.fclose(out_file);


  message('Done', no_acknowledge);
  synchronize;



        EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
            NEXT_RECORD;
            END LOOP;   
END;

【问题讨论】:

  • 是什么让你觉得它很快?在写入文件之前,我从未见过这是一个问题。提供您遇到的错误以及是否实际创建第一条记录的文件等详细信息会更有用。

标签: oracle plsql plsqldeveloper oracleforms


【解决方案1】:

您不应该在循环中打开/关闭文件。换句话说:

  • 打开文件
  • 循环
    • 写入文件
  • 结束循环
  • 关闭文件

暂停无济于事,只会让整个代码变慢。如果你想知道发生了什么,要么

  • 在调试模式下运行表单(如果您的表单版本允许;9i 及更高版本)或
  • message 调用放入其中

这样你就可以跟随执行。

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多