Ok, quindi dopo aver scavato molto di più, ho trovato la soluzione.
Il codice originale utilizzava ExecuteReader. L'ho modificato per eseguire ExecuteNonQuery.
Passo gli stessi parametri e tipi come ho fatto (2 input, 2 output, uno dei quali è una stringa, uno un riflesor).
Quando viene eseguito ExecuteNonQuery, posso vedere il valore del 3° parametro (la stringa). quindi faccio quanto segue:
OracleDataReader dr = ((OracleRefCursor)pRefcursor.Value).GetDataReader();
Quindi posso fare i miei soliti loop con il dr! Giorni felici!