2

oracleを使用してストアドプロシージャを作成しています。私はオラクルとストアドプロシージャに不慣れですが、私がやろうとしていることはかなり簡単に思えますが、それでも問題があります。

私は2つのテーブルを持っていBATCH_ISAますBATCH_TEMP

一時テーブルはBATCH_ISA、および他のいくつかのテーブルのレコードを使用して作成されました。レコードがテーブルに正常に移動された後、テーブルのフラグをBATCH_ISA「Y」から「N」に更新する必要がありBATCH_TEMPます。

BATCH_ISA両方のテーブルでISA_KEYフィールドが見つかったすべてのレコードを更新し、フラグを「N」に設定しようとしています。

使用する必要がある基本的な更新ステートメントは何ですか?

4

1 に答える 1

1
-- SET EVERYTHING TO 'N' FIRST:
UPDATE BATCH_ISA 
SET
    FLAG = 'N';

-- NOW UPDATE ONLY MATCHED ROWS TO 'Y':
UPDATE BATCH_ISA 
SET
    FLAG = 'Y' 
WHERE
    EXISTS (
        SELECT * FROM BATCH_TEMP
        WHERE BATCH_ISA.ISA_KEY = BATCH_TEMP.ISA_KEY
);

COMMIT;

最初の更新後にコミットを削除しましたが、行数が多い場合は、それを使用して redolog のオーバーヘッドを節約できます。

于 2012-11-19T19:48:29.977 に答える