Właśnie zacząłem czytać o przechowywanych procedurach. Czy ktoś może mi pomóc wywołać procedurę przechowywaną w Oracle z C#?Wywołanie procedury składowanej Oracle z C#?
Odpowiedz
proszę odwiedzić tę stronę ODP ustanowiony przez Oracle dla Microsoft OracleClient Deweloperzy: http://www.oracle.com/technetwork/topics/dotnet/index-085703.html
także Poniżej znajduje się przykładowy kod, który może Ci zacząć wywołać procedurę przechowywaną z C# do bazy danych Oracle. PKG_COLLECTION.CSP_COLLECTION_HDR_SELECT jest procedurą składowaną opartą na Oracle przyjmującą parametry PUNIT, POFFICE, PRECEIPT_NBR i zwracającą wynik w T_CURSOR.
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;
}
}
Dlaczego preferowana jest opcja "InitialLONGFetchSize = 1000"? Z DOCS 'Domyślnie = 0. Ustawienie tej właściwości na 0 powoduje całkowite usunięcie danych LONG i LONG RAW do momentu, aż aplikacja o nie poprosi." – KLIM8D
Jest to w zasadzie taki sam mechanizm jak w przypadku braku polecenia frazę:
- command.CommandText = nazwę procedury przechowywanej
- command.CommandType =
CommandType.StoredProcedure
- Jak wiele połączeń do command.Parameters.Add jako liczba parametrów sp wymaga
- command.ExecuteNonQuery
Istnieje wiele przykładów tam, pierwszy zwrócony przez Google jest this one
Jest też trochę pułapkę można wpaść, jeśli SP jest funkcją, Twój parametr wartość powrotna musi być pierwszy w parametrach kolekcja
w .NET poprzez wersji 4 można to zrobić w ten sam sposób jak dla SQL Server przechowywanych Procs ale należy pamiętać, że trzeba:
using System.Data.OracleClient;
Istnieje some system requirements here, że należy zweryfikować są OK w swoim scenariuszu.
Microsoft to deprecating this namespace as of .Net 4, więc dostawcy usług zewnętrznych będą potrzebni w przyszłości. Mając to na uwadze, możesz być lepiej używając Oracle Data Provider for .Net (ODP.NET) od słowa go - to ma optymalizacje, które nie są w klasach Microsoft. Istnieją inne opcje stron trzecich, ale Oracle ma silny interes w utrzymywaniu deweloperów .Net na pokładzie, więc ich powinna być dobra.
Mam teraz dostał kroki potrzebne do wywołania procedury z 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);
nadzieję, że to pomaga
Czy możesz mi powiedzieć, jaki jest cel 'OracleDataAdapter da = new OracleDataAdatper (cmd); 'jest? Czy ta linia jest wymagana? – AlbatrossCafe
ten kod działa dobrze dla mnie nazywając Oracle procedura przechowywana
dodać odwołania przez klikając prawym przyciskiem myszy nazwę twojego projektu w eksploratorze rozwiązań> Dodaj odwołanie> .Net, a następnie Dodaj przestrzenie nazw.
using System.Data.OracleClient;
using System.Data;
następnie wklej ten kod w wydarzeniu Handler
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();
i jego Gotowe ... Szczęśliwy Coding z C#
- 1. Wywołanie procedury składowanej o typach danych XML
- 2. Wywołanie procedury składowanej za pomocą asp.net
- 3. Asynchronizacja procedury składowanej wywołanie w T-SQL
- 4. pobierz parametr z procedury składowanej?
- 5. Wyjście z procedury składowanej
- 6. Wywołanie procedury składowanej w EF z rozszerzonym typem danych
- 7. Dostęp do usługi WWW z procedury składowanej Oracle
- 8. Jak zwracać parametry wyjściowe oracle z procedury składowanej w .NET
- 9. Wywołanie procedury składowanej z parametrem Out przy użyciu PDO
- 10. wywołanie procedury składowanej serwera SQL z parametrem w R
- 11. wywoływanie procedury składowanej z solr
- 12. Wywoływanie procedury składowanej z parametrami
- 13. Powróć do wiadomości z procedury składowanej do aplikacji C#
- 14. Wywoływanie procedury składowanej w codeigniter
- 15. Jak wyłączyć wyniki procedury przechowywanej z procedury składowanej?
- 16. Podsumowanie listy obiektów z procedury składowanej
- 17. Jak zwrócić tabelę tymczasową z procedury składowanej
- 18. Jak zwrócić tabelę z procedury składowanej?
- 19. Powracanie wielu wartości z procedury składowanej
- 20. Porównaj dwie wersje procedury składowanej
- 21. Filtrowanie zbioru wyników procedury składowanej
- 22. Zdobądź zestaw wyników z przechowywanej procedury oracle
- 23. Problem z porządkiem parametrów podczas korzystania z procedury składowanej
- 24. Wywołanie procedury przechowywanej w Oracle i obecnie Parametry
- 25. Tworzenie procedury składowanej w ramach innej procedury składowanej w SQL Server 2008
- 26. C# 2010, ODP.net, wywołanie procedury przechowywanej przechodzącej tablicy
- 27. Sposób wykonywania procedury składowanej od Laravel
- 28. Wykonywanie procedury składowanej jako innego użytkownika pozwolił
- 29. Uzyskaj nazwę schematu aktualnie wykonywanej procedury składowanej
- 30. Znajdź wszystkie wywołania procedury składowanej w MySQL?
można pisać procedury przechowywanej?Jakie biblioteki używasz do łączenia się z bazą danych? ADO.NET? ORM (nHibernate, EF)? Musisz podać dużo więcej szczegółów, jeśli chcesz uzyskać odpowiedź, która będzie pasować do twoich potrzeb. – Oded
Jeśli spodziewasz się odpowiedzi związanej z Oracle, oznacz to pytanie jako Oracle. Dziękuję Ci ! – tsimbalar
Użyłem wcześniej podstawowych zapytań SQL. Jednak teraz chciałem nazwać procedury Oracle już napisane, używając kodu C#. – Rohan