是否可以在不重新读取和重写整个内容的情况下将文本附加到oracle 9i clob?
我试过这个:
PreparedStatement stmt = cnt.prepareStatement( "select OUT from QRTZ_JOBEXEC where EXEC_ID=? " + "for update",ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE); try { stmt.setLong(1,id); ResultSet rs = stmt.executeQuery(); if (rs.next()) { Clob clob = rs.getClob(1); long len = clob.length(); Writer writer = clob.setCharacterStream(len+1); try { PrintWriter out = new PrintWriter(writer); out.println(line); out.close(); } finally { writer.close(); } rs.updateClob(1,clob); rs.updateRow(); } rs.close(); } finally { stmt.close(); }
解决方法
如果您只是添加文本,那么您可以尝试一个简单的
UPDATE qrtz_jobexec SET out = out || ? WHERE exex_id=?