Как добавить текст к оракулу - PullRequest
3 голосов
/ 29 июля 2011

Можно ли добавить текст к 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();
}

Но я получаю "Неподдерживаемый«исключение» при вызове setCharacterStream.

Ответы [ 2 ]

6 голосов
/ 29 июля 2011

DBMS_LOB.APPEND - это ключ.

1 голос
/ 29 июля 2011

если вы просто добавляете текст, вы можете попробовать простой

UPDATE qrtz_jobexec SET out = out || ? WHERE exex_id=?
...