【问题标题】:Error on value assignment - Value does not fall within the expected range赋值错误 - 值不在预期范围内
【发布时间】:2019-09-25 14:10:26
【问题描述】:

我正在尝试在将 oracle 参数发送到数据库之前为其分配值,但是这个特定的 XMLTYPE 正在抛出
System.ArgumentException: '值不在预期范围内。'

我尝试了各种建议,但其中大多数涉及重新启动笔记本电脑或 Visual Studio 设置等,我觉得这与 XMLType 到 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,但这也不起作用。知道可能出了什么问题吗?

【问题讨论】:

  • 我只是希望有人告诉我这个问题的负面标记的原因?这不是一个有效的问题吗?还是没有格式化或不够清晰?还是我没有尽力而为,还没有感到沮丧?我真的很想改进这部分并在未来以更好的方式发布。

标签: c# .net xml oracle xmltype


【解决方案1】:

您需要OracleXmlType 的实例而不是 XDocument,并将 XML 作为字符串参数传递 (mydata.ToString())

【讨论】:

  • 你是怎么做到的?一个简单的东西修复!不知道为什么 VS 2019 不采用 XDocument 并且 VS 2010 中的相同代码工作得很好。字符串似乎工作正常。
【解决方案2】:

你能试试这个吗?

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

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多