giovedì 19 febbraio 2026

ODI - Procedura per gestione Errori

 Di seguito una semplice procedura da inserire in ODI per gestire l'uscita da un package con errore.

DECLARE

v_sess_no NUMBER := <%=odiRef.getSession( "SESS_NO" )%>;v_error_msg VARCHAR2(4000);v_error_code NUMBER;BEGIN

v_error_msg:='Errore nel package CLOUDERA_TO_APEX_PI: ODI_SESSION_ID='||v_sess_no;RAISE_APPLICATION_ERROR(-20001, v_error_msg);

EXCEPTION WHEN NO_DATA_FOUND THEN    v_error_msg:='Errore nel package CLOUDERA_TO_APEX_PI: ODI_SESSION_ID='||v_sess_no;    RAISE_APPLICATION_ERROR(-20001, v_error_msg);WHEN OTHERS THEN    v_error_msg:='Errore nel package CLOUDERA_TO_APEX_PI: ODI_SESSION_ID='||v_sess_no;    RAISE_APPLICATION_ERROR(-20001, v_error_msg);END;

La proceduta deve essere inserita o in un package o LoadPlan per l'uscita dal processo in caso di un errore. Per farla funzionare basta collegare i KO in uscita da Mapping o altro alla procedura OD che contiene quanto indicato sopra.
  1. L'istruzione <%=odiRef.getSession( "SESS_NO" )%> restituisce ID di esecuzione del mapping o altro oggetto collegato in KO alla procedura.
Nel caso in cui si voglia parametrizzarla basta verificare le api di ODI o meglio le odiRef per ottenere eventualmente altre informazioni.