需要在Oracle數據庫中將超過4000個字節存儲到VARCHAR2中。解決方法是在數據庫中使用「擴展數據類型」來增加容量。我最多可以存儲2000個字符,但我插入的特殊字符最多爲3個字節。無法使用JDBCTemplate插入到擴展VARCHAR2
http://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF55623
手動插入使用的SQLDeveloper或SQL語句工作正常。測試2000字符/ 6000字節。
但是,試圖插入使用是NamedParameterJdbcTemplate超過4000字節的任何字符串時,收到以下錯誤:
所致:java.sql.SQLException中:ORA-01461:只能爲插入件結合的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();
}
列定義:
「逐字」 VARCHAR2(2000 CHAR)NOT NULL ENABLE
這就是問題所在。改爲12.1.3修正了它。 – user2480766