は、次の準備文を簡略化するため、それぞれの 'sytosc +?'のように3つの疑問符(?)の代わりに2つだけを使用します。私は同じ値を設定しています。式の変数を使用したSQLの更新
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 Updateでローカル変数を割り当てる方法が実際にあるのだろうか?
私はこのプロジェクトで使用しているように、MySQLと互換性のあるソリューションを高く評価します。
ありがとうございます。これは私が後にしたものです。私はそれが私の特定の問題に完全に合っているのでそれを受け入れる。私は疑問に思っています。より複雑な状況の解決策(NJet以外の@JB)では、クエリ全体に同じ値を参照していますか? – Boro
今のところ普遍的な解決策は考えられません。クエリを避けるためにクエリを単純化することもできます。 – piotrm