Java 如何在带有CASE语句的SQL中使用PreparedStatement
我必须使用Java 如何在带有CASE语句的SQL中使用PreparedStatement,java,oracle,jdbc,case,prepared-statement,Java,Oracle,Jdbc,Case,Prepared Statement,我必须使用case语句更新列,但是如何在case语句上设置PreparedStatement参数。我的代码如下所示: PreparedStatement updateAkaunAmanahPs = con.prepareStatement("" + "UPDATE GL_AKAUN_AMANAH " + " SET AMAUN_YOBCR = (CASE WHEN
case
语句更新列,但是如何在case
语句上设置PreparedStatement
参数。我的代码如下所示:
PreparedStatement updateAkaunAmanahPs = con.prepareStatement(""
+ "UPDATE GL_AKAUN_AMANAH "
+ " SET AMAUN_YOBCR = (CASE WHEN AMAUN_YOBCR IS NOT NULL THEN AMAUN_YOBCR = AMAUN_YOBCR + ? ELSE ? END) "
+ " WHERE PKID = ?");
updateAkaunAmanahPs.setBigDecimal(1, ytddr.subtract(ytdcr));
// if the case statement is true, how about this parameter ?
updateAkaunAmanahPs.setBigDecimal(2, ytddr.subtract(ytdcr));
updateAkaunAmanahPs.setLong(3, 30);
有什么想法吗?你只需要考虑占位符(
?
)的数量,在你的情况下,你有3个占位符,然后你需要相应地设置它们(,顺序相同)
updateAkaunAmanahPs.setBigDecimal(1, ytddr.subtract(ytdcr)); // for first placeholder
updateAkaunAmanahPs.setBigDecimal(2, ytddr.subtract(ytdcr)); // for second
updateAkaunAmanahPs.setLong(3, 30); // for third