【问题标题】:ORA-01461: can bind a LONG value only for insert into a LONG column - when inserting into CLOBORA-01461: 只能绑定 LONG 值以插入 LONG 列 - 当插入 CLOB 时
【发布时间】:2014-09-20 22:42:44
【问题描述】:

我在CLOB 列中插入一个大字符串。该字符串(在本例中)为 3190 个字符长 - 但可以更大。

字符串由 xml 数据组成 - 有时数据会提交,有时我会收到错误。错误发生的概率大约为 50%。

即使包含超过 5000 个字符的字符串有时也会毫无问题地提交。

不确定下一步该去哪里,因为我认为CLOB 是该数据的最佳数据类型。

我试过LONGLONG RAW

有人建议使用 XMLTYPE,但在我的 Oracle 版本 (11g - 11.2.0.2.0) 中不存在

我的插入语句

INSERT INTO MYTABLE(InterfaceId, SourceSystem, Description, Type, Status, StatusNotes, MessageData, CreatedDate, ChangedDate, Id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

MessageData 是发生错误的CLOB 列,我尝试在未填充此数据的情况下提交并且它可以工作。

错误

ORA-01461: can bind a LONG value only for insert into a LONG column

【问题讨论】:

  • Oracle 版本 3.1?我很确定 1983 年推出了第 3 版。真的是那个版本吗?
  • 我继续帮助 > 关于这就是所说的。还说版权所有 Oracle 2005-2011。如果有帮助的话,它的 oracle sql 开发人员
  • 尝试从 v$version 中选择 *;
  • 对了 - Oracle Database 11g 企业版 11.2.0.2.0 版 - 64 位生产
  • 对不起,不想成为一个长期的麻烦;-)

标签: sql oracle nhibernate oracle11g


【解决方案1】:
ALTER TABLE MYTABLE 
ADD COLUMN XML_COL XMLTYPE;

然后

SQL> INSERT INTO MYTABLE(..., XML_COL) VALUES  (..., XMLTYPE('<root>example</root>'));

关键是使用 XMLTYPE 列,然后使用 XMLTYPE() 函数将您的字符串转换为 XMLTYPE。

【讨论】:

  • 谢谢,但我正在使用 nHibernate 并且不确定如何以这种方式更改 INSERT 语句。当然使用CLOB 应该可以工作,因为数据只是一个很长的字符串......
  • XMLType 确实是存储 XML 的合适数据类型。如果您不确定休眠,让我们单独解决。
猜你喜欢
  • 2012-07-08
  • 2014-08-09
  • 2013-06-01
  • 2020-06-22
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 2017-05-13
相关资源
最近更新 更多