Anche se stai usando nomi per i tuoi parametri, il tuo autista li sta trattando in modo posizionale. In un certo senso puoi dirlo perché corrisponde (quasi) a :1
con il nome p_cr1
- '1' non è un nome valido. Non si lamenta poiché corrisponde in posizione, ma ciò significa che sta cercando di usare il P_para
per :1
, e poiché il tipo è sbagliato, questo spiega l'errore che vedi.
Potrebbe esserci un modo per cambiare il comportamento del driver, ma per ora puoi semplicemente scambiare l'ordine in cui li leghi, quindi i collegamenti si verificano nello stesso ordine (posizione) in cui le variabili appaiono nella query. Quindi:
cmd.Parameters.Add("p_cr1", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
cmd.Parameters.Add(new OracleParameter(":P_para", OracleDbType.Int64)).Value = Convert.ToInt64(Textbox.Text);
cmd.Parameters.Add("p_cr2", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);