需要在Oracle数据库中将超过4000个字节存储到VARCHAR2中。解决方法是在数据库中使用“扩展数据类型”来增加容量。我存储的最多2000个字符,但我插入的特殊字符每个最多3个字节。
http://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF55623
使用SQLDeveloper手动插入或SQL语句正常工作。测试了2000个字符/ 6000字节。
但是,当尝试使用NamedParameterJdbcTemplate插入超过4000个字节的任何字符串时,我收到以下错误:
引起:java.sql.SQLException:ORA-01461:只能插入LONG值才能插入LONG列
这让我相信它是某种类型的驱动问题。我正在使用依赖:
<dependency>
<groupId>com.oracle.weblogic</groupId>
<artifactId>ojdbc6</artifactId>
<version>10.3.6.0</version>
</dependency>
代码:
@Override
public Number createRecord(Number incidentId, String type,
String verbatim, String createdBy) {
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue(MyConstants.MAP_VERBATIM, verbatim);
namedTemplate.update(insertRecordSql, parameters, key, new
String[]{"VERBATIM_ID"});
return key.getKey();
}
列定义:
“VERBATIM”VARCHAR2(2000 CHAR)NOT NULL ENABLE
答案 0 :(得分:1)
你的maven条目看起来很奇怪。您正在尝试使用oracle 12c
增强功能,但您仍在使用oracle 10 <version>10.3.6.0</version>
中的jar。此外,如果您的jdk高于jdk6,您可能必须使用ojdbc7