Ich bin ein C# SQL Server Entwickler neu in Oracle Programmierung. Der folgende Code dient zum Einstellen von cmdText zu: "select * from myTable". Ich möchte jetzt dies in eine gespeicherte Prozedur setzen, Ich brauche Hilfe mit, wie diese gespeicherte Oracle-Prozedur schreiben und die Ergebnisse in eine DataTable in meinem C# Code erhalten. Vielen Dank. Code:C# Ergebnismenge aus Oracle-Store-Prozedur zurückgeben und eine DataTable füllen
private DbProviderFactory DbFactory
{
get
{
dbProviderFactory = dbProviderFactory ?? DbProviderFactories.GetFactory(providerInvariantName);
return dbProviderFactory;
}
}
public DataTable ExecDataTable(string cmdText, params IDataParameter[] cmdParams)
{
DataTable resultDT = new DataTable();
using (DbConnection dbConn = DbFactory.CreateConnection())
{
dbConn.ConnectionString = connectionString;
using (DbCommand dbCmd = DbFactory.CreateCommand())
{
dbCmd.CommandText = cmdText;
dbCmd.Connection = dbConn;
try
{
dbConn.Open();
if (cmdParams != null)
{
dbCmd.Parameters.AddRange(cmdParams);
}
using (DbDataAdapter dbDA = DbFactory.CreateDataAdapter())
{
dbDA.SelectCommand = dbCmd;
dbDA.Fill(resultDT);
}
}
finally
{
dbConn.Close();
}
}
}
return resultDT;
}
Hinweis: connectionString, providerInvariantName sind zuvor im Code festgelegt.
Auch ein Ratschlag zum Refactoring meines Codes wird geschätzt Dies ist der Ansatz, den ich habe, um ODP.net und ODBC-Verbindungen zu Oracle zu unterstützen, die vor Ort erforderlich ist.
aktualisieren
Das kann ich bekommen zu arbeiten mit:
new Oracle.DataAccess.Client.OracleParameter("result", Oracle.DataAccess.Client.OracleDbType.RefCursor, ParameterDirection.Output);
aber ich kann nicht eine generische Lösung zu erhalten, scheint zu funktionieren mit DbParameter oder IDataParameter wie kann ich dies tun zu Unterstützung ODBC und ODP.net?
Danke und wie nehme ich das in C# auf? und füllen Sie die DataTable? – m3ntat