2017-07-05 1 views
0

ich die gleiche Situation haben wie in diesem Beitrag beschrieben: Porting Oracle procedure to PostgreSQL (exception codes from orafce for utl_file module)Migrate Orakel Postgresql UTL_FILE AUSNAHMEN

Ich bin von Oracle Migration mit ora2pg postgres und ich bin versucht, die Syntax der Ausnahmebehandlung zu korrigieren, dass ich habe für 'utl_file'. Jemand hat in dem anderen Beitrag eine Lösung kommentiert, aber ich habe nicht verstanden, wie man sie richtig anwendet.

Ich habe den nächsten Code:

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); 

daher für jeden Schritt habe ich ein Stück Code wie diese, die die Ausnahme behandelt. Ich erhalte einen Syntaxfehler: FEHLER: Syntaxfehler bei oder in der Nähe von "UTL_FILE".

Bitte helfen ...

+0

Haben Sie orafce plugin ---> https://github.com/orafce/orafce, das emuliert Oracle-interne Pakete wie UTL_FILE, ohne dass Sie nicht UTL_FILE in POSTGRES verwenden können, da es nicht auf seinem existiert besitzen. – ivanzg

+0

Ja, ich habe orafce plugin. Ich versuche die Ausnahmegriffe zu lösen und nicht die utl_files. Irgendeine Idee ? – Mariel

+0

Wenn Sie das oracle-Tag durch das orafce-Tag ersetzen, springt möglicherweise einer der orafce-Betreuer ein, wenn sie es sehen. – jeff6times7

Antwort

0

Ich habe das Schreiben PL/SQL seit geraumer Zeit und ich habe nie über die kommen Imperativ PERFORM. Wenn dieser Code auf einer Oracle-Instanz ausgeführt werden soll, würde ich einfach die beiden "PERFORM" -Strings entfernen.

Wenn dies auf einer POSTGRES-Instanz ausgeführt werden soll, würde ich nicht erwarten, dass UTL_FILE existiert. Wenn dies der Fall ist, wurden dem Benutzer, der den Code ausführt, möglicherweise keine Berechtigungen zum Ausführen von UTL_FILE erteilt.

+0

Ich habe orafce plugin. Ich versuche, die Ausnahmegriffe zu lösen und nicht die utl_files. Irgendeine Idee? – Mariel