Ho trovato la risposta.
Per il parametro OUT ho dichiarato la dimensione al massimo di varchar - 32767 e ha iniziato a funzionare.
Per semplificare, il processo memorizzato restituisce un parametro OUT di tipo VARCHAR2. Ma per consumare quell'output da .NET stavo passando VARCHAR2 senza alcuna dimensione. Quindi lo spazio buffer allocato per ricevere il valore di ritorno era 0 byte. Quando il proc restituisce il valore più del buffer allocato che è 0 byte, si verifica un errore.
Quindi ho specificato il massimo di VARCHAR2-32767 nel codice C# e ha iniziato a funzionare :).