Je fais une application MVC. J'utilise la connexion Oracle Database avec Enterprise Library.Bibliothèque Oracle Enterprise Called procédure stockée avec l'erreur ExecuteSprocAccessor
Le problème que j'ai est de récupérer des données lors de l'utilisation ExecuteSprocAccessor
...
Lorsque j'utilise Linq
pour lier les données retournées il fonctionne très bien. Mais quand je ExecuteSprocAccessor
ai eu une erreur ..... The number of parameters does not match number of values for stored procedure
Database db = readConfig.ReadWebConfig();
string SP_NAME = "PKG_AR_PRESUPUESTOS_HS.GET_CAMPANAS";
using (DbCommand dbCommand = db.GetStoredProcCommand(SP_NAME))
{
dbCommand.Parameters.Clear();
db.AddInParameter(dbCommand, "p_COD_PAIS", DbType.Int32, 32);
db.AddInParameter(dbCommand, "p_COD_COMPANIA", DbType.Int32, 36);
db.AddInParameter(dbCommand, "p_COD_MEDIO", DbType.Int32, 4);
db.AddInParameter(dbCommand, "p_COD_CLIENTE", DbType.Int32, 285);
OracleParameter oraPara1 = new OracleParameter("CURSORSALIDA", OracleType.Cursor);
oraPara1.Direction = ParameterDirection.Output;
dbCommand.Parameters.Add(oraPara1);
List<Campana> result2 = db.ExecuteDataSet(dbCommand).Tables[0].AsEnumerable().ToList().ConvertAll(dr => new Campana
{
COD_CAMPANA = Convert.ToInt32(dr["COD_CAMPANA"].ToString()),
COD_COMPANIA = Convert.ToInt32(dr["COD_COMPANIA"].ToString()),
COD_PRODUCTO = Convert.ToInt32(dr["COD_PRODUCTO"].ToString()),
DES_CAMPANA = dr["DES_CAMPANA"].ToString()
});
Ce beau travail ...
Mais quand j'utilise
Database db = readConfig.ReadWebConfig();
string SP_NAME = "PKG_AR_PRESUPUESTOS_HS.GET_CAMPANAS";
using (DbCommand dbCommand = db.GetStoredProcCommand(SP_NAME))
{
dbCommand.Parameters.Clear();
db.AddInParameter(dbCommand, "p_COD_PAIS", DbType.Int32, 32);
db.AddInParameter(dbCommand, "p_COD_COMPANIA", DbType.Int32, 36);
db.AddInParameter(dbCommand, "p_COD_MEDIO", DbType.Int32, 4);
db.AddInParameter(dbCommand, "p_COD_CLIENTE", DbType.Int32, 285);
OracleParameter oraPara1 = new OracleParameter("CURSORSALIDA", OracleType.Cursor);
oraPara1.Direction = ParameterDirection.Output;
dbCommand.Parameters.Add(oraPara1);
List<Campana> result = db.ExecuteSprocAccessor<Campana>(SP_NAME, dbCommand.Parameters).ToList<Campana>();
a obtenu une erreur ... The number of parameters does not match number of values for stored procedure
Même si je peux utiliser Mapping
IRowMapper<Campana> resmapper = MapBuilder<Campana>.MapAllProperties()
.Map(x => x.COD_CAMPANA).ToColumn("COD_CAMPANA")
.Map(x => x.COD_COMPANIA).ToColumn("COD_COMPANIA")
.Map(x => x.DES_CAMPANA).ToColumn("DES_CAMPANA")
.Map(x => x.COD_PRODUCTO).ToColumn("COD_PRODUCTO")
.Build();
DataTable dt = db.ExecuteDataSet(dbCommand).Tables[0];
List<Campana> result = db.ExecuteSprocAccessor<Campana>(SP_NAME, resmapper, dbCommand.Parameters).ToList<Campana>();
Je suis la même erreur ...
Quel est le problème avec ExecuteSprocAccessor
?
De toute façon, ma classe Campana ressemble à ceci.
public class Campana
{
public Int32 COD_COMPANIA { get; set; }
public Int32 COD_CAMPANA { get; set; }
public string DES_CAMPANA { get; set; }
public Int32 COD_PRODUCTO { get; set; }
}
Peut-être que vous devriez afficher le code de la procédure stockée et –