我不知道这样的事情是否可能:
PreparedStatement stm = connection.prepareStatement("INSERT INTO TABLE(DATE,VALUE) VALUES (?, (CASE WHEN ? IS NULL THEN 'N' ELSE ? END))");
stm.setDate(1, date);
stm.setString(2, value);
//stm.setString(3, value); -> without this
stm.addBatch();
....
stm.executeBatch();
因为总共3个“?”在插入字符串中,需要添加另一个stm.setString(3, value)
。
是否可以避免再次设置值-> stm.setString(3, value)
?
如果是,正确的语法是什么?
是否可以批量执行此类操作?
这对我有用:
"INSERT INTO TABLE(DATE,VALUE) VALUES (TRUNC(TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI:SS.FF')), ?)"
但是诸如CASE WHEN
...等更复杂的语句呢?
在这种情况下,我知道最好使用默认的列值,例如:
VALUE CHAR(1) default 'N'