Ошибка при присвоении значения - значение не попадает в ожидаемый диапазон - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь присвоить значение параметру oracle перед отправкой его в базу данных, но этот конкретный XMLTYPE выбрасывает
System.ArgumentException: 'значение не попадает в ожидаемый диапазон.'

Iпробовал различные предложения, но большинство из них включают перезапуск настроек ноутбука или визуальной студии и т. д., я чувствую, что это как-то связано с XMLType to XDocument.Однако аналогичный код работает в другом решении.

Мой код C # выглядит следующим образом:

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;
            }
        }

Значение myData:

<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>

Я даже пыталсяизменение myData на XmlDocument, но это также не работает.Есть идеи, что может пойти не так?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вам нужен экземпляр OracleXmlType вместо XDocument и передать XML в качестве строкового аргумента (mydata.ToString())

0 голосов
/ 08 мая 2019

вы можете попробовать это.

    XMLString = "<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>";


parameters[1] = new OracleParameter()
            {
                ParameterName = "P_DATA",
                Value = XMLString,
                OracleDbType = OracleDbType.XmlType,
                Direction = ParameterDirection.Input
            };
...