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;
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.
- L'istruzione <%=odiRef.getSession( "SESS_NO" )%> restituisce ID di esecuzione del mapping o altro oggetto collegato in KO alla procedura.

Nessun commento:
Posta un commento