如何将文本附加到 oracle clob

发布于 2024-11-26 19:42:25 字数 852 浏览 4 评论 0原文

是否可以将文本附加到 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 时出现“不支持的功能”异常。

Is it possible to append text to an oracle 9i clob without rereading and rewriting the whole content?

I have tried this:

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();
}

But I'm getting an "Unsupported feature" exception on the call to setCharacterStream.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暖心男生 2024-12-03 19:42:26

如果您只是添加文本那么您可以尝试一个简单的

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

if you are just adding text then you could try a simple

UPDATE qrtz_jobexec SET out = out || ? WHERE exex_id=?
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文