2017-07-03 79 views
0

需要在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

回答

1

Maven的條目看起來很奇怪。您正試圖利用oracle 12c增強功能,但仍然使用oracle 10 <version>10.3.6.0</version>的jar。此外,如果您的jdk高於jdk6,那麼您可能需要使用ojdbc7

+0

這就是問題所在。改爲12.1.3修正了它。 – user2480766