0
我知道它的工作原理是使用SQL如何将空字符串更新为oracle Clob
update activity set REFERENCE = EMPTY_CLOB() where id = ?
但我不能这样做,我不能在SQL中硬编码'EMPTY_CLOB()'。 我使用的方式如下:
String empty_string = "";
conn = getConnection();
pStmt = conn.prepareStatement("SELECT REFERENCE FROM activity WHERE ID = ? FOR UPDATE");
pStmt.setLong(1, 1);
rset = pStmt.executeQuery();
Clob clob = null;
while (rset.next()) {
clob = rset.getClob(1);
Writer writer = adapter.getCharacterOutputStream(clob);
writer.write(empty_string);
writer.flush();
writer.close();
}
pStmt = conn.prepareStatement("update activity set REFERENCE = ? WHERE ID = ?");
pStmt.setClob(1, clob);
pStmt.setLong(2, 1);
pStmt.executeUpdate();
但它没有用。 clob没有更新为空字符串,它仍然存储为以前的值。
任何身体都可以帮助我吗?
+1建议将列设置为NULL。 –
感谢您的建议,我认为您的方式有效。但。只是有点混乱,因为你的方式简单而且表现很好,为什么所有的人总是在做并且仍然在做。先选择然后更新。形式oracle官方文档还是建议先选择然后更新。令人困惑...... –
@ user872501:我从来没有见过它。所以你对“*所有人*”的看法似乎与我对所有人的看法不同* –