我正在使用Simple.Data.Oracle在表中插入数据。我试图在其中一个列中插入一个非常大的值,它给我以下错误
ORA-22835:缓冲区为lille直到转换为CLOB直到CHAR eller BLOB直到RAW(faktisk:19471,maksimum:4000)
我在项目方面还有很长的路要走,并且无法负担转储Simple.Data.Oracle并寻找其他替代方案......
答案 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是字符串的原因但是我认为你有几个选择:
DBMS_LOB.SUBSTR
和“chunk”用于所需数量的字符串。