Я разработчик SQL Server на c # новичок в программировании Oracle . Приведенный ниже код работает для установки cmdText на: «select * from myTable». Теперь я хотел бы поместить это в хранимую процедуру, Мне нужна помощь с тем, как написать эту хранимую процедуру Oracle и получить результаты в DataTable в моем коде c # . Благодарю. Код:
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;
}
Примечание: connectionString, providerInvariantName предварительно установлены в коде.
Также приветствуются любые советы по рефакторингу моего кода это подход, который я выбрал для поддержки ODP.net, а также соединений ODBC с Oracle, который требуется на сайте.
Обновление
Я могу заставить это работать, используя:
new Oracle.DataAccess.Client.OracleParameter("result", Oracle.DataAccess.Client.OracleDbType.RefCursor, ParameterDirection.Output);
Однако я не могу заставить работать универсальное решение с использованием DbParameter или IDataParameter как мне сделать это для поддержки ODBC и ODP.net ?