c# retour jeu de résultats à partir d'Oracle magasin de procédure et de remplir un DataTable
Je suis un c# SQL Server developer nouveau à Oracle programmation. Le code ci-dessous fonctionne pour le réglage de cmdText à: "select * from matable". Je voudrais maintenant mettre cela dans une procédure stockée, j'ai besoin d'aide avec la façon d'écrire cette procédure stockée Oracle et obtenir les résultats dans un DataTable dans mon code c#. Merci. Code:
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;
}
Remarque: connectionString, providerInvariantName sont définies précédemment dans le code.
Aussi des conseils sur la refactorisation mon code est apprécié c'est l'approche que j'ai prises à l'appui de ODP.net et aussi les connexions ODBC pour Oracle qui est nécessaire sur le site.
Mise à jour
Je peux obtenir ce travail à l'aide de:
new Oracle.DataAccess.Client.OracleParameter("result", Oracle.DataAccess.Client.OracleDbType.RefCursor, ParameterDirection.Output);
Cependant, je n'arrive pas à obtenir une solution générique à travailler à l'aide de DbParameter ou IDataParameter comment puis-je faire pour en charge ODBC et ODP.net ?
Vous devez vous connecter pour publier un commentaire.
Avez-vous vraiment en charge ODBC. Sinon il suffit d'utiliser seulement ODP.Net il a optimisé l'accès à l'Oracle. Le moyen le plus efficace pour obtenir des données à partir d'Oracle est à l'aide de ref curseurs, vous devez apprendre à l'utiliser.
Set de propriété CommandType,
Méthode de remplissage s'ouvre et fermer la connexion de base de données implicitement donc pas besoin d'ouvrir & fermer la connexion de base de données.
Utilisation cmd.Le paramètre.AddWithValue() méthode pour pousser les deux, paramètre et la valeur.