使用Simple.Data.Oracle时出现缓冲区溢出错误

时间:2013-10-28 08:34:19

标签: sql oracle orm simple.data

我正在使用Simple.Data.Oracle在表中插入数据。我试图在其中一个列中插入一个非常大的值,它给我以下错误

ORA-22835:缓冲区为lille直到转换为CLOB直到CHAR eller BLOB直到RAW(faktisk:19471,maksimum:4000)

我在项目方面还有很长的路要走,并且无法负担转储Simple.Data.Oracle并寻找其他替代方案......

1 个答案:

答案 0 :(得分:0)

您正在将CLOB转换为某些描述的字符串。 SQL中的字符串中最多有4,000个字符,因此如果要将其放入字符中,则需要获取CLOB的子字符串。

最简单的方法是使用DBMS_LOB.SUBSTR

似乎simple.data.oracle本身不支持CLOB;如果查看the code for the DBTypeConverter class,字典会将CLOB映射到DBType.String

{"CLOB", DbType.String},

尽管the documentation linked in the comments表明它应该映射到DBType.Object。虽然映射在11.2 documentation中略有变化,但CLOB仍然是一个对象。

我不知道决定CLOB是字符串的原因但是我认为你有几个选择:

  1. 提出关于GitHub的错误报告,并准备告诉它不是一个错误。
  2. 拉出一个版本并自行更改 - 请注意,由于CLOB被认为是一个字符串,因此可能会有很多更改。
  3. 使用偏移量参数将{CLOB}中的DBMS_LOB.SUBSTR和“chunk”用于所需数量的字符串。