2017-12-30 103 views
-1

caseステートメントを使用して列を更新する必要がありますが、caseステートメントよりもPreparedStatementパラメータを設定するにはどうすればよいですか。私のコードは次のようになります:CASE文を持つSQLで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); 

アイデアはありますか?

答えて

2

あなただけのプレースホルダ(?)、あなたのケースでは、あなたが3つのプレースホルダを持っているの数を考慮する必要があり、その後は

updateAkaunAmanahPs.setBigDecimal(1, ytddr.subtract(ytdcr)); // for first placeholder 
updateAkaunAmanahPs.setBigDecimal(2, ytddr.subtract(ytdcr)); // for second 
updateAkaunAmanahPs.setLong(3, 30); // for third 
(同じ順序に )に応じて、それらを設定する必要があります
関連する問題