Среда: oracle 11g, spring-jdbc-3.2.2-RELEASE.jar, JDK 1.7, драйвер Oracle UCP.
У меня есть хранимая процедура, которая вставляет запись в таблицу со столбцом CLOB. SP имеет входной аргумент CLOB среди других аргументов IN и OUT. Мой код Java использует Spring StoredProcedure для вызова хранимой процедуры:
public class MyClass extends StoredProcedure {
public MyClass(){
.....
declareParameter(new SqlParameter("content", Types.CLOB));
.....
}
public void insert(){
HashMap<String,Object> params = new HashMap<String, Object>(37);
String bigContent = ....; // which contains ASCII chars in my test
....
params.put("content", new SqlLobValue(bigContent));
....
execute(params);
}
}
Код отлично работает, если в bigContent ‹ 32 тыс. символов. Если в bigContent есть, скажем, 50 тысяч символов, это не сработает. Я также протестировал использование jdbcTemplate и SqlLobValue для прямой вставки в таблицу, все работает нормально, если bigContent имеет 50 тыс. символов.
Я хочу использовать SP, так как он делает множество других вещей и более эффективен, чем вызов нескольких SQL-операторов вставки, обновления и запроса по отдельности.
Кто-нибудь знает, как заставить его работать с SP? Или это предел, который я должен обрабатывать по-другому, если в bigContent> 32K символов?