create or replace procedure cmpp_submit_remove_procedure
isdendtime date; -- 每次處理是時間點
-- 取得要處理的資料id
cursor c_cmpp_submit(endtime date) is
select id from cmpp_submit
where ((ih_process <> 'insert_cmpp_submit' and ih_process <> 'wait_for_response')
or (ih_process = 'wait_for_response' and ih_retry <= 0))
and ih_timestamp < endtime and rownum<100001 ;
iid number; -- id
icount number; -- 計數器
begin
--dendtime := trunc((sysdate - 1/288),'mi'); -- 取得處理時間點,處理5分鐘前的資料
dendtime := trunc(sysdate,'mi'); -- 取得處理時間點
icount := 0; -- 初始化計數
open c_cmpp_submit(dendtime);
loop
fetch c_cmpp_submit into iid;
exit when c_cmpp_submit%notfound;
icount := icount+1;
insert into cmpp_submit_backup select * from cmpp_submit where id=iid;
delete from cmpp_submit where id=iid;
if ( icount=1000 ) then -- 每1000條提交一次
begin
commit;
end;
end if;
end loop; -- end of loop
close c_cmpp_submit;
commit;
return;
exception
when others then
begin
rollback;
if c_cmpp_submit%isopen then
close c_cmpp_submit;
end if;
exception
when others then
null;
end;
end cmpp_submit_remove_procedure;
儲存過程示例
1.輸入乙個引數,要求判斷表內容中欄位存在的5,非5,所有等三種情況 方案1 create or replace package body allan is procedure insert test imput varchar2 cur out mytype is begin open cur f...
儲存過程示例
建立測試資料 create table book 編號 number 10 書名 varchar2 20 varchar2 20 insert into book values 100,aa 88.77 select from book 建立儲存過程 create or replace proced...
儲存過程示例
orderid nvarchar 50 訂單號 userid int,使用者編號 address nvarchar 255 收貨人位址 totalmoney money output 總金額 asbegin declare error int set error 0 計算總金額 begin tran...