需要将超过 4000 个字节存储到 Oracle 数据库中的 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:只能绑定(bind) 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 启用
最佳答案
你的 Maven 条目看起来很奇怪。您正在尝试利用oracle 12c
增强功能,但您仍然使用来自 oracle 10 <version>10.3.6.0</version>
的 jar 。此外,如果你的jdk高于jdk6,你可能必须使用ojdbc7
关于java - 无法使用 JDBCTemplate 插入扩展 VARCHAR2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44893284/