Oracle 10gのクエリからのレコード値を使用して、テーブル内の複数の列を簡単に/エレガントに更新する方法はありますか?
簡単にするために、2つの列とを含むテーブル(ソースと呼びます)があり ID
ますKEY
。
IDキー ---- ---- 1 1000 2 1000 3 5000 4 1000 .. 101 8000 102 9000 103 7000 104 9000 ..。 201 5 202 5 ..。
バッチ内のIDのキーマップである列を使用して、それを取得して使用する別のテーブル(と呼びますKeyMap
)があります。trunc(ID/100)
batchID
trunc(ID / 100)key1 key2 key3 key4 ..... key99 .. ------------- ---- ---- ---- ---- 0 1000 1000 5000 1000 1 8000 9000 7000 9000 2 5 5
IDはバッチで作成および処理されるため、バッチ処理の最後に、ストアドプロシージャを呼び出して、これらのキーを提供する副選択またはコレクションを使用して、1つの更新ステートメントでKeyMap
テーブル内のレコードを新しい値で更新します。Key
値。
これは可能ですか?これを行うための最良/最も効率的な方法は何ですか?