我正在使用 Simple.Data.Oracle 在表中插入数据。我试图在其中一列中插入一个非常大的值,它给了我以下错误
ORA-22835:lille til konvertering af CLOB til CHAR eller BLOB til RAW 的缓冲区 (faktisk: 19471, maksimum: 4000)
我在项目中遥遥领先,目前无法转储 Simple.Data.Oracle 并寻找其他替代品......
我正在使用 Simple.Data.Oracle 在表中插入数据。我试图在其中一列中插入一个非常大的值,它给了我以下错误
ORA-22835:lille til konvertering af CLOB til CHAR eller BLOB til RAW 的缓冲区 (faktisk: 19471, maksimum: 4000)
我在项目中遥遥领先,目前无法转储 Simple.Data.Oracle 并寻找其他替代品......
您正在将 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 是字符串的原因,但我认为您有几个选择:
DBMS_LOB.SUBSTR
offset 参数使用 CLOB 并将其“分块”为所需数量的字符串。