Originariamente inviato da floyd
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;
prova così :quote: :quote: :quote:


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;