我的情况与此帖中描述的情况相同: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”或附近的语法错误。
请帮忙......
答案 0 :(得分:0)
我已经写了PL / SQL很长一段时间了,我从未遇到过PERFORM命令。如果要在Oracle实例上运行此代码,那么我只需删除两个“PERFORM”字符串。
如果这应该在POSTGRES实例上运行,那么我不希望UTL_FILE存在。如果确实存在,那么运行代码的用户可能没有被授予执行UTL_FILE的权限。