oracle ORA-29282:过程调用中的文件ID无效

ajsxfq5m  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(377)

我有一个成功运行的plsql过程。当我把这个过程调用到另一个包中的另一个过程中时,它错误地输出了无效的文件ID。

Proc test1(debug varchar2 default 0) as
     dt    date; 
    cursor 1 
select sysdate as dt from dual;
   
    Begin
     IF month(dt) < Dec THEN
        update table1
         set term_date= sysdate +10
        where table1_year='2023'
      END IF; 
    End;


  Procedure test2(value varchar2) as 

Begin
     report_file:=utl_file.fopen(lC_report_dir_obj_out,lC_report_fname,'w');
    If value='Y' THEN
    BEGIN
      Proc test1(1);
    dbms_output.put_line('Run test1 success');
lv_msg :=success;
    Exception
      WHEN OTHERS THEN
      dbms_output.put_line('Run test1 success');
lv_msg :=sqlerrm; 
    END;
     utl_file.put_line(report_file,lv_msg,autoflush=>TRUE);
    End if ;
    
    End test2;

错误:ORA-29282:无效文件ID ORA-06512:在“SYS.UTL_FILE”,第166行ORA-06512:at“SYS.UTL_FILE”,line 866
如果不是为了过程调用,则写入文件没有问题。该过程有许多循环,并从游标开始遍历每一行。

zqdjd7g9

zqdjd7g91#

过程test1有一个fclose all,它关闭了所有文件,包括过程test2打开的文件。我进行了变更,手术成功完成。

相关问题