Ma il problema qual è? Non lo hai detto... compili con un generico "errore" o Oracle ti segnala qualcosa di particolare?

Comunque, tanto per cominciare , sei sicuro che quelle query diano un risultato e non siano errate? Perché non provi a farle semplicemente per vedere se danno errori, ancora prima di scriverle per la dichiarazione del cursore?

Poi, quello che sicuramente non va è questo:

codice:
IF(C_MATRI=C_VIAGGIO) THEN
non è sintatticamente sbagliato ma le due variabili confrontate cosa dovrebbero contenere? Non c'è niente dentro, le hai solo dichiarate nella sezione apposita ma non ci fai nulla poi.