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 ?

InformationsquelleAutor m3ntat | 2009-08-20