I am trying to assign value to an oracle parameter before sending it to database but this one particular XMLTYPE is throwing
System.ArgumentException: 'Value does not fall within the expected range.'
I tried various suggestions but most of them involve restarting laptop or visual studio settings etc, I feel this has something to do with the XMLType to XDocument. However, a similar code works in another solution.
My C# Code looks like below:
public static string SaveMyData(int myId, XDocument myData)
{
try
{
OracleParameter[] parameters = new OracleParameter[3];
parameters[0] = new OracleParameter()
{
ParameterName = "P_ID",
Value = myId,
OracleDbType = OracleDbType.Int16,
Direction = ParameterDirection.Input
};
parameters[1] = new OracleParameter()
{
ParameterName = "P_DATA",
Value = myData,
OracleDbType = OracleDbType.XmlType,
Direction = ParameterDirection.Input
};
parameters[2] = new OracleParameter()
{
ParameterName = "P_RESULT",
OracleDbType = OracleDbType.Varchar2,
Direction = ParameterDirection.Output
};
string myresult = DataAccess.DataContext.GetInstance().Data.ExecuteProcWithParameter(UPDATE_MY_DATA, parameters)["P_RESULT"].ToString();
return myresult;
}
catch (Exception ex)
{
throw ex;
}
}
The value of myData is :
<players>
<player>
<id>10101</id>
<name>Ricardo Ferreira Rodrigues</name>
<shirtnumber>1</shirtnumber>
<position>Guarda Redes</position>
<realteam>5</realteam>
</player>
<player>
<id>10103</id>
<name>Antonio Manuel</name>
<shirtnumber>2</shirtnumber>
<position>Defesa</position>
<realteam>5</realteam>
</player>
</players>
I even tried changing the myData to XmlDocument but that as well doesn't work. Any idea on what might be going wrong ?
You need an instance of OracleXmlType instead of the XDocument and pass the XML as a string argument (mydata.ToString()
)