I have an oracle package with some non mandatory parameters, iam using entity framework to call it but found some difficult in finding correct syntax
looking here i try in that way
string query = "";
var pSoloAttivi = new OracleParameter("ONLY_ATTV", SoloAttivi ? "Y" : "N");
var pIdIncarico = new OracleParameter("ASSIGNMENT_ID", IdIncarico);
query = $"BEGIN PKG_INSP.INSPECTIONS_LIST(@ONLY_ATTV={pSoloAttivi}); END;";
if (!string.IsNullOrWhiteSpace(IdIncarico))
{
query = $"BEGIN PKG_INSP.INSPECTIONS_LIST(@ONLY_ATTV={pSoloAttivi}, @ASSIGNMENT_ID = {pIdIncarico}); END;";
}
return await _context
.Set<DtoElencoIncarichi>()
.FromSqlRaw(query)
.AsNoTracking()
.ToListAsync();
but got error from oracle at '@' character
i try with that
string queryBase = "BEGIN PKG_INSP.INSPECTIONS_LIST({0}); END;";
var query = string.Format(queryBase, "ONLY_ATTV => :ONLY_ATTV");
IEnumerable <OracleParameter> parameters = new List<OracleParameter>();
parameters = parameters.Append(new OracleParameter("ONLY_ATTV", SoloAttivi ? "Y" : "N"));
if (!string.IsNullOrWhiteSpace(IdIncarico))
{
query = string.Format(queryBase, "ONLY_ATTV => :ONLY_ATTV, ASSIGNMENT_ID=> :ASSIGNMENT_ID");
parameters = parameters.Append(new OracleParameter("ASSIGNMENT_ID", IdIncarico));
}
return await _context
.Set<DtoElencoIncarichi>()
.FromSqlRaw(query, parameters.ToArray())
.AsNoTracking()
.ToListAsync();
but get no results from oracle, while manually executing text from sql variable works fine, maybe parameters are not correctly replaced