ORA-01461:只能插入一个LONG值插入LONG列 - 插入CLOB时

时间:2014-07-29 14:05:57

标签: sql oracle nhibernate oracle11g

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

该字符串由xml数据组成 - 有时数据将提交,有时我会收到错误。大约50%的时间都会出现错误。

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

不确定下一步该怎么做,因为我认为CLOB是此数据的最佳数据类型。

我已尝试LONG LONG 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

1 个答案:

答案 0 :(得分:1)

ALTER TABLE MYTABLE 
ADD COLUMN XML_COL XMLTYPE;

然后

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

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