0

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

ORA-22835:lille til konvertering af CLOB til CHAR eller BLOB til RAW 的缓冲区 (faktisk: 19471, maksimum: 4000)

我在项目中遥遥领先,目前无法转储 Simple.Data.Oracle 并寻找其他替代品......

4

1 回答 1

0

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

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

它似乎并不simple.data.oracle原生支持 CLOB;如果您查看该类的代码,DBTypeConverter则字典将 CLOB 映射到DBType.String

{"CLOB", DbType.String},

尽管注释中链接的文档表明它应该映射到DBType.Object. 尽管11.2 文档中的映射发生了非常细微的变化,但CLOB 仍然是一个对象。

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

  1. 在 GitHub 上提交错误报告,并准备好被告知这不是错误。
  2. 拉取一个版本并自己更改它 - 请注意,由于假定 CLOB 是一个字符串,因此可能需要进行很多更改。
  3. 使用DBMS_LOB.SUBSTRoffset 参数使用 CLOB 并将其“分块”为所需数量的字符串。
于 2013-10-28T09:38:29.577 回答