protected DbCommand BuildStoredProcedureCommand(string query, ParamSet paramSet) { DbCommand cmd = null; switch (DBEngine) { case DBEngines.MSSqlServer: cmd = new SqlCommand(); break; case DBEngines.Oracle: cmd = new OracleCommand(); break; } cmd.Connection = DbConnection; cmd.Transaction = DbTransaction; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = ResolveStoredProcedurePlaceholders(query); if (paramSet != null) { foreach (ParamSet.ParamInfo pi in paramSet.GetInfos()) { IDbDataParameter param = cmd.CreateParameter(); param.ParameterName = pi.Name; if (pi.OracleDbType.HasValue && DBEngine == DBEngines.Oracle) { OracleParameter oracleParam = param as OracleParameter; if (oracleParam != null) { oracleParam.OracleDbType = pi.OracleDbType.Value; } } else { param.DbType = pi.DbType; } param.Value = pi.Value; param.Direction = pi.Direction; cmd.Parameters.Add(param); } } return(cmd); }