在儲存過程利用遊標迴圈執行update語句
阿新 • • 發佈:2019-01-25
初到公司的第一個工作任務:(用Oracle的job定時對一個值進行累加計算);
雖然比較簡單,但是由於已經兩年多沒有用過儲存過程和遊標這些了,所以重新溫習了下;
記下筆記
========建立儲存過程,定義遊標迴圈執行update語句
create or replace procedure JOBTCOUNT asbegin
declare
cursor emp_cur is
select T_COUNT from JOB_T_BUSINESS_COUNT for update ;
begin
for emp_row in emp_cur
loop
update JOB_T_BUSINESS_COUNT set T_COUNT=T_COUNT+0.5 where current of emp_cur;
end loop;
commit;
end;
end;
==========建立job任務每秒執行一次
SQL> variable jobbusinesscount number;
SQL> begin
2 dbms_job.submit(:jobbusinesscount,'JOBTCOUNT;',sysdate,'sysdate+1/86400');
3 end;
4 /
========啟動job任務
SQL> begin
2 dbms_job.run(:jobbusinesscount);
3 end;
4 /
========刪除job任務
SQL> begin
2 dbms_job.remove(:jobbusinesscount);
3 end;
4 /
===查詢job select * from dba_jobs=======啟動job(登陸使用者為建立該job的屬主)
exec DBMS_JOB.broken(22,false);
==停止
exec DBMS_JOB.broken(22,true);