【发布时间】:2012-02-08 17:29:33
【问题描述】:
我想问一下如何简化以下准备好的语句,因此对于每个 'sytosc + ?',它只使用 2 个,而不是 3 个问号 (?)我设置了相同的值。
PreparedStatement psUp = conn.prepareStatement("UPDATE zawodnicy "
+ "SET sytosc = CASE WHEN (sytosc + ? > 100) THEN 100 ELSE sytosc + ? END "
+ "WHERE id=?");
我知道在 SQL 中你可以做到:
SET @a = 25;
UPDATE zawodnicy SET sytosc = CASE WHEN (sytosc + @a > 100)
THEN 100 ELSE sytosc + @a END WHERE id = 1
显然你不能把它放在这个准备好的语句中,因为它们实际上是两个语句。
我想知道是否真的有一种方法可以在第一次评估“sytosc + ?”时在这种 SQL 更新中分配局部变量?
我将非常感谢与 MySQL 兼容的解决方案,因为这是我在这个项目中使用的。
【问题讨论】:
标签: java mysql sql prepared-statement