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

C#-Aufruf von Oracle gespeicherte Funktion

Der ORA-06550 Code, den Sie erhalten, bedeutet, dass die Funktion mit ungültigen Anweisungen kompiliert wurde und neu geschrieben werden muss. Ich sehe keinen offensichtlichen Fehler im Code, daher haben Sie möglicherweise Probleme wie Berechtigungen oder falsche Tabellennamen und sollten prüfen, ob Sie die Funktion in erster Linie in einem PL/SQL-Editor ausführen können. Dann, nachdem Sie das zum Laufen gebracht haben, versuchen Sie...

var cmd = new OracleCommand();

cmd.Connection = conn;
cmd.CommandText = "ar_knyga_egzistuoja";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("id", id);
cmd.Parameters.Add("kiekis", OracleType.Number);
cmd.Parmeters["kiekis"].Direction = ParameterDirection.ReturnValue;

cmd.Connection.Open();
cmd.ExecuteNonQuery();

var kiekis = Convert.ToString(cmd.Parameters["kiekis"].Value);

MessageBox.Show(kiekis);
cmd.Connection.Close();

Dies sollte in der Lage sein, die Funktion wie eine gespeicherte Prozedur auszuführen, während ein Rückgabewert namens kiekis erwartet wird vom Typ number für die Arbeit verfügbar sein.