2012-11-19 70 views
2

我正在寫一個使用oracle的存儲過程。我對oracle和存儲過程很陌生,但我試圖做的事似乎相當直接,但我遇到了麻煩。基本的oracle更新語句

我有2個表BATCH_ISABATCH_TEMP

臨時表是從BATCH_ISA記錄,以及一些其他的表創建。在記錄成功移入BATCH_TEMP表後,我需要將BATCH_ISA表中的一個標誌從'Y'更新爲'N'。

我想在BATCH_ISAISA_KEY字段在兩個表中發現這樣做的更新所有的記錄,並且標誌設置爲「N」

什麼是基本的更新語句我應該使用?

回答

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開銷。