将oracle迁移到Postgresql UTL_FILE EXCEPTIONS

时间:2017-07-05 16:46:27

标签: postgresql exception orafce

我的情况与此帖中描述的情况相同:Porting Oracle procedure to PostgreSQL (exception codes from orafce for utl_file module)

我正在使用ora2pg从oracle迁移到postgres,我试图纠正我对'utl_file'的异常处理的语法。有人在另一篇文章中评论了一个解决方案,但我不明白如何正确应用它。

我有下一个代码:

   V_Step := 1;

    FOR Rec_Report IN C_Report LOOP

      V_Counter := V_Counter + 1;

      -- Header
      IF V_Counter = 1 THEN

         -- Open File
        V_File_Type := UTL_FILE.FOPEN(V_Dir_Name, V_File_Name,'w');

        V_Step := 2;

        bl_create_flat_file_pg.open_html(V_File_Type);
         .......
         .......
         .......

          V_Step :=10

EXCEPTION
when UTL_FILE.INVALID_PATH then
PERFORM control_reports_pg.send_error_mail('invalid_path 
V_Step'||V_Step,C_Function_Name);
PERFORM UTL_FILE.FCLOSE(V_File_Type);

when UTL_FILE.INVALID_MODE then
PERFORM control_reports_pg.send_error_mail('INVALID_MODE  
 V_Step'||V_Step,C_Function_Name);
     PERFORM  UTL_FILE.FCLOSE(V_File_Type);

因此,对于每一步,我都有一段代码来处理异常。我收到语法错误: 错误:“UTL_FILE”或附近的语法错误。

请帮忙......

1 个答案:

答案 0 :(得分:0)

我已经写了PL / SQL很长一段时间了,我从未遇到过PERFORM命令。如果要在Oracle实例上运行此代码,那么我只需删除两个“PERFORM”字符串。

如果这应该在POSTGRES实例上运行,那么我不希望UTL_FILE存在。如果确实存在,那么运行代码的用户可能没有被授予执行UTL_FILE的权限。