は私が問題にして明確にしてみましょう - 私は、Oracleのテーブルにいくつかの列を更新するために使用されるクエリを持っている:同じ方法でプリペアドステートメントを使用する場合、列の更新をバイパスまたは回避する方法はありますか?
UPDATE MED_COM_MAPPER_CMDS SET STATUS = ?, OUTAGE_ID = ? WHERE CMD_ID = ?
私は特定のを持っていない限り、条件付きがOUTAGE_ID
列値テーブルを更新しないしたいです値はSTATUS
列にあります。これを以下に示す方法と同じ方法で実装するにはどうすればよいですか?メソッドの変更は許容されますが、あまりにも多くはありません。以下のコード行で示されているのと同じ方法でこれを行うことはできませんか?
Connection connection = DatabaseUtil.getConnection();
preparedStatement.setInt(1, Integer.parseInt(status));
// On a condition, how can i avoid updating this column value.
// That means keep intact what it is in the DB.
preparedStatement.setString(2, outage_id);
preparedStatement.setString(3, cmd_id);
int i = preparedStatement.executeUpdate();
connection.commit();
これは単純にすることです。これは、クエリまたはメソッドをオーバーライドすることによって、またはインデックス値のインクリメントを伴うif条件によって実行できます。
希望しています。
OUTAGE_ID列の既存の値を取得するには、その前にSELECTクエリを実行する必要があります。右 ? – Hari
@ハリー・ナウ、アップデートの一部では、もう何も選択したりパスしたりする必要はありません。 Oracleは、このwhere句で戻される各行の既存のOUTAGE_ID値を認識し、既存のステータス・フィールド= 'X'の場合はOUTAGE_IDを「new_val」に更新します。 – tbone