0

我得到一个我无法追踪的“ORA-12899 - 列的值太大(实际:5,最大值:4)”。我正在使用 C# 中的 Oracle.ManagedDataAccess 提供程序进行教科书参数化插入。有没有人见过这样的事情?

我们正在做的看起来像:

var commandText = "insert into MyTable ([a ton of variables])   values(:A,:B,..........)";
using (OracleConnection connection = new OracleConnection(connectionString))
{
    connection.Open();
    using (OracleCommand command = new OracleCommand(commandText, connection))
    {
         for (the ton of variables there are to insert whose values are in a collection)
         command.Parameters.Add(theVariableName, theVariableValue);
    }
    command.ExecuteNonQuery();
}

有什么想法吗?我检查了许多其他答案,但没有运气。

4

2 回答 2

2

尝试设置 command.BindByName=true。

问题可能在于您在 for“(大量变量...)”循环中添加参数的顺序。OracleCommand“BindByName”中有一个参数默认为 false,这意味着它将忽略您正在创建的 OracleParameter 中的变量名,而仅依赖于添加它们的顺序。因此,如果您的变量被乱序添加,您肯定需要设置 command.BindByName=true。

于 2017-02-21T23:33:27.543 回答
0

回到您将属性大小定义为 4 的数据库的创建。更改表并增加它。

于 2017-02-26T19:02:05.423 回答