Вы не упомянули конкретно в своем посте, но, судя по тэгам для вопроса, я предполагаю, что вы делаете это с Java.
У меня был успех с таким кодом в проекте, который я только что закончил. В этом приложении используется Unicode, поэтому могут быть более простые решения, если ваша проблемная область ограничена стандартным набором символов ASCII.
Используете ли вы в настоящее время метод OracleStatement.setCLOB ()? Это ужасно неловкое дело, но мы не могли обойти это иначе. Вы должны фактически создать временный CLOB, а затем использовать этот временный CLOB в вызове метода setCLOB ().
Теперь я извлек это из работающей системы, и мне пришлось внести несколько специальных изменений, поэтому, если это не сработает в вашей ситуации, дайте мне знать, и я вернусь, чтобы увидеть если я могу получить меньший рабочий пример.
Это, конечно, предполагает, что вы используете драйверы JDBC Oracle Corp. (ojdbc14.jar или ojdbc5.jar), которые находятся в $ ORACLE_HOME / jdbc / lib
CLOB tempClob = CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);
// Open the temporary CLOB in readwrite mode to enable writing
tempClob.open(CLOB.MODE_READWRITE);
// Get the output stream to write
Writer tempClobWriter = tempClob.getCharacterOutputStream();
// Write the data into the temporary CLOB
tempClobWriter.write(stringData);
// Flush and close the stream
tempClobWriter.flush();
tempClobWriter.close();
// Close the temporary CLOB
tempClob.close();
myStatement.setCLOB(column.order, tempClob);
С уважением,
Дуэйн Кинг