Ich habe gerade angefangen, über gespeicherte Prozeduren zu lesen. Kann mir bitte jemand helfen, eine gespeicherte Prozedur in Oracle von C# anzurufen?Oracle gespeicherte Prozedur von C# aufrufen?
Antwort
Bitte besuchen Sie diese ODP-Website von Oracle für Microsoft OracleClient Entwickler einzurichten: http://www.oracle.com/technetwork/topics/dotnet/index-085703.html
Auch unten ist ein Beispielcode, den Sie können den Einstieg in Oracle eine gespeicherte Prozedur von C# nennen. PKG_COLLECTION.CSP_COLLECTION_HDR_SELECT ist die gespeicherte Prozedur, die auf den Oracle-Akzeptanzparametern PUNIT, POFFICE, PRECEIPT_NBR basiert und das Ergebnis in T_CURSOR zurückgibt.
using Oracle.DataAccess;
using Oracle.DataAccess.Client;
public DataTable GetHeader_BySproc(string unit, string office, string receiptno)
{
using (OracleConnection cn = new OracleConnection(DatabaseHelper.GetConnectionString()))
{
OracleDataAdapter da = new OracleDataAdapter();
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.InitialLONGFetchSize = 1000;
cmd.CommandText = DatabaseHelper.GetDBOwner() + "PKG_COLLECTION.CSP_COLLECTION_HDR_SELECT";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("PUNIT", OracleDbType.Char).Value = unit;
cmd.Parameters.Add("POFFICE", OracleDbType.Char).Value = office;
cmd.Parameters.Add("PRECEIPT_NBR", OracleDbType.Int32).Value = receiptno;
cmd.Parameters.Add("T_CURSOR", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
Warum wird 'InitialLONGFetchSize = 1000' bevorzugt? Aus dem DOCS 'Default = 0. Festlegen dieser Eigenschaft auf 0 verschiebt die LANGE und LANGE RAW-Datenabruf vollständig, bis die Anwendung es speziell anfordert. ' – KLIM8D
Es ist im Grunde der gleiche Mechanismus wie für einen nicht-Abfragebefehl mit:
- Command.CommandText = den Namen der gespeicherte Prozedur
- command.CommandType =
CommandType.StoredProcedure
- Wie viele Anrufe command.Parameters.Add als die Anzahl der Parameter, die der SP erfordert
- command.ExecuteNonQuery
Es gibt viele Beispiele gibt, die erste von Google zurück ist this one
Es gibt auch eine kleine Falle Sie in fallen könnte, wenn Ihr SP eine Funktion ist, muss der Rückgabewert Parameter in den Parametern ersten sein, Sammlung
in .Net durch Version 4 kann dies als für SQL Server gespeicherte Procs die gleiche Art und Weise getan werden, aber beachten Sie, dass Sie benötigen:
using System.Data.OracleClient;
Es gibt some system requirements here, die Sie in Ihrem Szenario sind OK bestätigen sollte.
Microsoft ist deprecating this namespace as of .Net 4, so dass Drittanbieter in der Zukunft benötigt werden. In diesem Sinne sollten Sie von Anfang an besser mit Oracle Data Provider for .Net (ODP.NET) arbeiten - das hat Optimierungen, die nicht in den Microsoft-Klassen sind. Es gibt noch weitere Optionen von Drittanbietern, aber Oracle hat ein starkes Interesse daran, .Net-Entwickler an Bord zu behalten, damit sie gut sein sollten.
ich haben jetzt die Schritte von C#
//GIVE PROCEDURE NAME
cmd = new OracleCommand("PROCEDURE_NAME", con);
cmd.CommandType = CommandType.StoredProcedure;
//ASSIGN PARAMETERS TO BE PASSED
cmd.Parameters.Add("PARAM1",OracleDbType.Varchar2).Value = VAL1;
cmd.Parameters.Add("PARAM2",OracleDbType.Varchar2).Value = VAL2;
//THIS PARAMETER MAY BE USED TO RETURN RESULT OF PROCEDURE CALL
cmd.Parameters.Add("vSUCCESS", OracleDbType.Varchar2, 1);
cmd.Parameters["vSUCCESS"].Direction = ParameterDirection.Output;
//USE THIS PARAMETER CASE CURSOR IS RETURNED FROM PROCEDURE
cmd.Parameters.Add("vCHASSIS_RESULT",OracleDbType.RefCursor,ParameterDirection.InputOutput);
//CALL PROCEDURE
con.Open();
OracleDataAdapter da = new OracleDataAdapter(cmd);
cmd.ExecuteNonQuery();
//RETURN VALUE
if (cmd.Parameters["vSUCCESS"].Value.ToString().Equals("T"))
{
//YOUR CODE
}
//OR
//IN CASE CURSOR IS TO BE USED, STORE IT IN DATATABLE
con.Open();
OracleDataAdapter da = new OracleDataAdapter(cmd);
da.Fill(dt);
this helps
Können Sie mir sagen, was der Zweck von' OracleDataAdapter da = neue OracleDataAdatper (cmd); 'ist? Ist diese Linie erforderlich? – AlbatrossCafe
Dieser Kodex für mich ruft gespeicherte Oracle-Prozedur
Referenzen gut nennen Verfahren erforderlich arbeitethinzufügen von Klicken Sie mit der rechten Maustaste auf Ihren Projektnamen im Lösungsexplorer> Referenz hinzufügen> .Net und dann Namespaces hinzufügen.
using System.Data.OracleClient;
using System.Data;
dann diesen Code in Ereignishandler einfügen
string str = "User ID=username;Password=password;Data Source=Test";
OracleConnection conn = new OracleConnection(str);
OracleCommand cmd = new OracleCommand("stored_procedure_name", conn);
cmd.CommandType = CommandType.StoredProcedure;
--Ad parameter list--
cmd.Parameters.Add("parameter_name", "varchar2").Value = value;
....
conn.Open();
cmd.ExecuteNonQuery();
Und seine Erledigt ... Glücklich mit dem C#
Coding- 1. Anrufdaten-spezifische gespeicherte Prozedur von Oracle-Prozedur
- 2. Gespeicherte Prozedur aufrufen VBA
- 3. Oracle gespeicherte Prozedur OUT Parameter
- 4. Probleme, die gespeicherte Prozedur von C# mit großem CLOB aufrufen
- 5. Gespeicherte Prozedur von c ausführen #
- 6. Wie gespeicherte Prozedur auf Laravel aufrufen?
- 7. gespeicherte Prozedur aus anderen Stored Procedure aufrufen
- 8. Oracle: Call gespeicherte Prozedur innerhalb des Pakets
- 9. Anruf Oracle gespeicherte Prozedur mit EF versagen
- 10. wie gespeicherte Prozedur in Oracle 11g schreiben
- 11. "Boolean" -Parameter für gespeicherte Oracle-Prozedur
- 12. Eine gespeicherte Prozedur in Oracle schreiben
- 13. aufrufen gespeicherte Prozedur auf der Serverseite in ASP.net
- 14. C# gespeicherte Prozedur ohne optionale Parameter übergeben
- 15. C# temporäre gespeicherte Prozedur ausgeführt
- 16. Gespeicherte Prozedur Funktioniert nicht von C# code
- 17. Lauf Oracle gespeicherte Prozeduren aus C#
- 18. C# retrieve gespeicherte Prozedur führt
- 19. Classic ASP Aufruf von Oracle gespeicherte Prozedur mit OraOleadb Treiber
- 20. C#: passing Datatable gespeicherte Prozedur: Spaltenreihenfolge Problem
- 21. Aufruf von Aspnet-Mitgliedschaft ResetPassword gespeicherte Prozedur
- 22. Gespeicherte Prozedur
- 23. Wie Oracle-Funktion oder gespeicherte Prozedur mit Feder Persistenz-Framework aufrufen?
- 24. So rufen Sie Oracle gespeicherte Prozedur bei PHP mit ODBC
- 25. Gespeicherte Prozedur in EF mit komplexem Datentyp aufrufen
- 26. Gespeicherte MemSQL-Prozedur
- 27. Perl - wie Oracle DB gespeicherte Prozedur aufgerufen wird
- 28. Wie übergeben Sie ein Array von Werten von Oracle Apex Page in Oracle gespeicherte Prozedur
- 29. Wie Sie eine gespeicherte DB2-Prozedur mit Visual Basic aufrufen?
- 30. Gespeicherte Prozedur in foreach-Schleife aufrufen - nur zuerst ausgeführt
Können Sie die gespeicherte Prozedur schreiben?Mit welchen Bibliotheken verbinden Sie sich mit der DB? ADO.NET? Ein ORM (nHibernate, EF)? Sie müssen viel mehr Details zur Verfügung stellen, wenn Sie eine Antwort wünschen, die Ihren Bedürfnissen entspricht. – Oded
Wenn Sie eine Oracle-spezifische Antwort erwarten, markieren Sie Ihre Frage bitte als Oracle. Vielen Dank ! – tsimbalar
Ich habe zuvor grundlegende SQL-Abfragen verwendet. Jetzt wollte ich jedoch Oracle-Prozeduren aufrufen, die bereits mit C# -Code geschrieben wurden. – Rohan