Originariamente inviato da floyd
prova così :quote: :quote: :quote:codice:for rc in c3 LOOP BEGIN SELECT MAX(ID_STORICO) as Max into num from Recall45_debug_storico where colonna5= rc.colonna5; EXCEPTION WHEN NO_DATA_FOUND THEN EXIT; END; SELECT record_type_new, record_status_new, call_result_new,col_esito_new INTO rc_type_storico,rc_status_storico,c_result_storico, es_storico FROM Recall45_debug_storico WHERE colonna5= rc.colonna5 and id_storico=num; IF rc.COL_ESITO = es_storico then /* verifica l esito applicativo, se congruente */ IF rc.record_type = rc_type_storico and rc.record_status = rc_status_storico and rc.call_result = c_result_storico then EXIT; END IF; ELSE DBMS_OUTPUT.PUT_LINE(err ||' ' || rc.COLONNA5 || ' L''esito telefonico/applicativo della tabella RECALL_STORICO non coincide con l esito della scheda ON LINE (scheda non in Stale)'); END IF; END LOOP;
così va in errore la seconda select quando la trova nulla.
Ho provato così ma mi da errore per il posizionamento dell'end:
IF.....................
BEGIN
SELECT MAX(ID_STORICO) as Max into num from Recall45_debug_storico where colonna5= rc.colonna5;
EXCEPTION WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(ok ||' ' || rc.COLONNA5 || ' Scheda in anteprima');
EXIT;
END;
BEGIN
SELECT record_type_new, record_status_new, call_result_new,col_esito_new INTO rc_type_storico,rc_status_storico,c_result_storico , es_storico FROM Recall45_debug_storico WHERE colonna5= rc.colonna5 and id_storico=num;
EXCEPTION WHEN NO_DATA_FOUND THEN
IF rc.COL_ESITO = es_storico then /* verifica l esito applicativo, se congruente */
IF rc.record_type = rc_type_storico and rc.record_status= rc_status_storico and rc.call_result= c_result_storico then
EXIT;
END IF;
EXIT;
END;
ELSE
DBMS_OUTPUT.PUT_LINE(err ||' ' || rc.COLONNA5 || ' L esito telefonico/applicativo della tabella RECALL_STORICO non coincide con l esito della scheda ON LINE (scheda non in Stale)');
END IF;
END IF;
END LOOP;