【发布时间】:2011-08-18 20:05:15
【问题描述】:
我有一个 C# 函数,它使用 ODP.NET 构造参数化插入查询,由于某种原因,它不断返回“ORA-01401:插入的值对于列来说太大”异常。
我已经彻底检查了有问题的字符串变量的长度,它远远低于数据库列的最大大小(1024 个字符长的 Varchar2 列中有 70 个字符长)。奇怪的是,如果我将值作为字符串而不是参数变量插入,则插入工作正常。这是代码(参数化):
connectionString = GetConnectionString();
conn = new OracleConnection(connectionString);
OracleDataAdapter oda = new OracleDataAdapter();
conn.Open();
insertStatement = "INSERT INTO DOCS (ID, PATH, PAGES, USERID,SUFFIX, MASK) ";
insertStatement += "VALUES (:id, :itemUrl, 1, 'SHAREPOINT\\system',0,'000') ";
oda.InsertCommand = new OracleCommand(insertStatement, conn);
oda.InsertCommand.Parameters.Add(":id", docList[0].taskerID.ToString());
oda.InsertCommand.Parameters.Add(":itemUrl", itemUrl);
count += oda.InsertCommand.ExecuteNonQuery();
我在想,也许我在 ODP.NET 中缺少一些东西,或者实际上我遇到了 ODP.NET 的一个错误。我在我的服务器上使用 9.2.0.7 版的 Oracle.DataAccess。有什么想法吗?
【问题讨论】: