Не удается обновить clob с помощью иностранных символов с помощью UPDATEXML в Java

#java #xml #oracle #clob

#java #xml #Oracle #clob

Вопрос:

Я пытаюсь обновить грузинские символы в clob, который используется для XML. Мне пришлось использовать clob, поскольку текст обычно довольно большой. это моя часть обновления:

 select = "update datadocumentxml dn"  
                "   set d.datadocumentxml = updatexml(xmltype(d.datadocumentxml),'/Comments/@Comment', ?)n"   
                "                                   .getClobVal(),n"   

                " where d.processengineguid = fnguidjava2raw(?)n"   
                "   and d.datadocumentid = 'Comments'";
    ps = conn.prepareStatement(select);

    ps.setClob(1,clob);
    ps.setString(2,processid);
    rs = ps.executeQuery(); 
  

этот код отлично работает с английским, русским, арабским и некоторыми символами. Но когда я пытаюсь обновить грузинские буквы, которые похожи на символы 6 , я получаю внутренние ошибки. Я также пробовал японские буквы, и они тоже не работают.

это ошибка:

 Caused by: java.sql.SQLException: ORA-00600: internal error code, 
arguments: [17114], [0x7FEA96179698], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17114], [0x7FEA96179698], [], [], [], [], [], [], [], [], [], []

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1046)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)
at sun.reflect.GeneratedMethodAccessor845.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at oracle.ucp.jdbc.proxy.PreparedStatementProxyFactory.invoke(PreparedStatementProxyFactory.java:125)
at com.sun.proxy.$Proxy949.executeQuery(Unknown Source)
at ge.bog.integration.crif.data.collector.connector.parallelcomments.UpdateXml.setComment(UpdateXml.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
... 46 more
  

Я думаю, что это как-то связано с драйверами и кодировками JDBC..

любое предложение было бы очень полезно. Спасибо.

Комментарии:

1. Для внутренних ошибок ORA-00600 может потребоваться в конечном итоге открыть запрос в службу поддержки Oracle. Но в журнале предупреждений на сервере должно быть больше сведений о причине ошибки.