【发布时间】:2017-02-21 23:26:31
【问题描述】:
我收到一个“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();
}
有什么想法吗?我检查了许多其他答案,但没有运气。
【问题讨论】:
-
什么是你无法追踪的?哪个输入对于列来说太大了?
MyTable中的列数据类型和大小是什么?如果您不知道,请运行define MyTable找出答案。缩小范围 - 哪一列是 `varchar2(4)(或者可能是 char(4) 或 number(4))? -
原来是排序问题。我认为通过添加字段名称顺序无关紧要。事实证明确实如此。请参阅下面 Chris 的回答。