2017-12-30 22 views
-1

Ich muss eine Spalte mit case Anweisung aktualisieren, aber wie stelle ich einen PreparedStatement Parameter über case Anweisung. Mein Code sieht so aus:Wie PreparedStatement in SQL mit CASE-Anweisung verwenden

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

Irgendwelche Ideen?

Antwort

2

Sie müssen nur die Anzahl der Platzhalter betrachten (?), in Ihrem Fall, Sie haben 3 Platzhalter, dann müssen Sie diese entsprechend einstellen (in derselben Reihenfolge)

updateAkaunAmanahPs.setBigDecimal(1, ytddr.subtract(ytdcr)); // for first placeholder 
updateAkaunAmanahPs.setBigDecimal(2, ytddr.subtract(ytdcr)); // for second 
updateAkaunAmanahPs.setLong(3, 30); // for third 
Verwandte Themen