set time on
set timing on
set echo on
set serveroutput on
DECLARE
CURSOR c1 IS
SELECT ROWID FROM 디비오너.테이블명
WHERE
조건컬럼 -- 데이터 삭제 조건 지정
nCNT number := 0;
sMSG varchar2(100) := '
';
BEGIN
BEGIN
FOR cur_rec IN c1 LOOP
delete from 디비오너.테이블명
where rowid =
cur_rec.rowid;
nCNT := nCNT + 1;
-- 중간 commit
수행
if mod(nCNT, 5000) =0 then
commit;
end if;
END LOOP;
commit;
EXCEPTION
WHEN OTHERS THEN
sMSG := '
'||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')||to_char(nCNT,'999,999,990')||' Row
Deleted';
DBMS_OUTPUT.PUT_LINE('Delete Cnt = ' ||
sMSG);
sMSG := ' '||to_char(sysdate,'YYYY-MM-DD
HH24:MI:SS')||'-'||SQLERRM;
DBMS_OUTPUT.PUT_LINE('ERROR MESSAGE =
' || sMSG);
END
COMMIT;
DBMS_OUTPUT.PUT_LINE('Delete Cnt =
' || nCNT);
END;
/
프로그램 호출은 Pro*C 기준으로 다음과 같이 호출
DECLARE
BEGIN
디비오너.패키지명.바디부문(인자값);
END;
END-EXEC;
