sql >> Base de Datos >  >> RDS >> Oracle

cómo ejecutar varias consultas de Oracle C#

Aunque está usando nombres para sus parámetros, su controlador los está tratando posicionalmente. Puedes darte cuenta porque (casi) coincide con :1 con el nombre p_cr1 - '1' no es un nombre válido. No se queja porque coincide posicionalmente, pero eso significa que está tratando de usar el P_para para :1 , y como el tipo de eso es incorrecto, eso explica el error que ves.

Es posible que haya una manera de cambiar el comportamiento del controlador, pero por ahora solo puede cambiar el orden en que los enlaza, de modo que los enlaces se produzcan en el mismo orden (posición) en que las variables aparecen en la consulta. Entonces:

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);