0

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

Svyatoslav Danyliv
  • 21,911
  • 3
  • 16
  • 32
gt.guybrush
  • 1,320
  • 3
  • 19
  • 48
  • i use two different variable, you can try here https://dotnetfiddle.net/RlHswM but that is not the main question. none of indicated query works – gt.guybrush Sep 29 '22 at 09:08

0 Answers0