0
我正在使用以下過程將數據從一個表存檔到另一個表。如何處理DB倒入等異常在存儲過程中
create or replace PROCEDURE CHECK_TWO AS
v_insert_count number;
v_delete_count number;
v_initial_count number;
BEGIN
SELECT count(*) into v_initial_count from process_state where tstamp BETWEEN ADD_MONTHS(trunc(SYSDATE,'MONTH'), -12) AND LAST_DAY(TRUNC(SYSDATE, 'MONTH') - 4);
dbms_output.put_line(v_initial_count);
insert into process_state_archive select * from process_state where tstamp BETWEEN ADD_MONTHS(trunc(SYSDATE,'MONTH'), -12) AND LAST_DAY(TRUNC(SYSDATE, 'MONTH') - 4);
v_insert_count := sql%rowcount;
dbms_output.put_line(v_insert_count);
delete process_state where tstamp BETWEEN ADD_MONTHS(trunc(SYSDATE,'MONTH'), -12) AND LAST_DAY(TRUNC(SYSDATE, 'MONTH') - 4);
v_delete_count := sql%rowcount;
dbms_output.put_line(v_delete_count);
if v_insert_count = v_delete_count AND v_initial_count= v_insert_count then
commit;
else
rollback;
end if;
END CHECK_TWO;
在這個過程中,我要處理類似服務器不可用或數據庫出故障或任何其他環境相關的問題異常。如何在我的存儲過程中處理這些場景。任何人都可以請告訴我?
謝謝:)另外一件事,在複製之間,如果更多的記錄添加到process_state表中,那麼這個過程會複製最近被添加的新記錄嗎? – vkreddy
您的過程將存檔表中所有的內容,直到調用insert語句爲止。 – danish