Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment exécuter plusieurs requêtes oracle c#

Bien que vous utilisiez des noms pour vos paramètres, votre pilote les traite par position. Vous pouvez en quelque sorte le dire car il correspond (presque) à :1 avec le nom p_cr1 - '1' n'est pas un nom valide. Il ne se plaint pas car il correspond en position - mais cela signifie qu'il essaie d'utiliser le P_para pour :1 , et comme le type est faux, cela explique l'erreur que vous voyez.

Il existe peut-être un moyen de modifier le comportement du pilote, mais pour l'instant, vous pouvez simplement échanger l'ordre dans lequel vous les liez - afin que les liaisons se produisent dans le même ordre (position) que les variables apparaissent dans la requête. Donc :

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