1. 程式人生 > >在儲存過程利用遊標迴圈執行update語句

在儲存過程利用遊標迴圈執行update語句

初到公司的第一個工作任務:(用Oracle的job定時對一個值進行累加計算);

雖然比較簡單,但是由於已經兩年多沒有用過儲存過程和遊標這些了,所以重新溫習了下;

記下筆記

========建立儲存過程,定義遊標迴圈執行update語句

create or replace procedure JOBTCOUNT as
begin
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);