Oracle
 sql >> Datenbank >  >> RDS >> Oracle

wie man mehrere orakel abfragen c# ausführt

Obwohl Sie Namen für Ihre Parameter verwenden, behandelt Ihr Treiber sie positionsabhängig. Sie können es irgendwie sagen, weil es (fast) zu :1 passt mit dem Namen p_cr1 - '1' ist kein gültiger Name. Es beschwert sich nicht, da es positionell übereinstimmt - aber das bedeutet, dass es versucht, den P_para zu verwenden für :1 , und da der Typ falsch ist, erklärt das den angezeigten Fehler.

Es kann durchaus eine Möglichkeit geben, das Verhalten des Treibers zu ändern, aber im Moment können Sie einfach die Reihenfolge ändern, in der Sie sie binden - die Bindungen erfolgen also in derselben Reihenfolge (Position), in der die Variablen in der Abfrage erscheinen. Also:

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