2014-01-06 78 views
0

我已經編寫了一個存儲過程,其中包含對許多表應用邏輯來計算值並轉換某些數據的SELECT。從存儲過程中的結果集中刪除db2

我被問及是否可以從存儲過程的結果集中排除記錄並將記錄寫入單獨的日誌表。我正在尋找循環訪問SELECT語句的結果集,並刪除我想要排除的記錄,只要我將它寫入表中。目前,我正努力從存儲過程的SELECT語句的結果集中找到要刪除的語法,並且只能找到如何使用遊標引用從原始數據庫表中刪除。

我需要刪除相同的存儲過程中的記錄,我正在尋找避免通過使用一些邏輯來找到要包含的記錄並重復一些邏輯以便能夠找到記錄的邏輯重複排除。我能想到的唯一另一種選擇是使用臨時表,但我認爲我應該可以做到。

任何幫助表示讚賞。

回答

0

當您在存儲過程(或應用程序中)中打開遊標時,可以執行定位刪除。您可以執行該語句,

DELETE WHERE CURRENT OF cursorname; 

請注意,在默認情況下發出COMMIT聲明將關閉所有打開的遊標,所以如果你打算讓這個刪除了你將需要使用聲明你的光標多筆交易操作蔓延WITH HOLD

+0

感謝您的幫助,但我遇到了語法問題。我正在使用數據工作室,並將「OF」強調爲錯誤。我正在使用的代碼示例爲 start_loop:LOOP IF SQLCODE = 0 THEN FETCH cursor1 INTO v_id; DELETE WHERE CURRENT OF cursor1; ELSE LEAVE start_loop; END IF; END LOOP start_loop; – user3165854