Posted on 2006-10-09 09:28
Hally 閱讀(5893)
評論(0) 編輯 收藏 所屬分類:
學習隨筆
1 首先查看
SQL> show parameter job
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes????????????????? integer???? 10
如果值是 0 需要修改(如果為0則無法運行job,此值為允許同時運行的job數(shù)量)
alter system set job_queue_processes =10; --或者其他值
2 一個簡單例子:
創(chuàng)建測試表
SQL> create table TEST(a date);
表已創(chuàng)建。
創(chuàng)建一個自定義過程
SQL> create or replace procedure MYPROC as
2 begin
3 insert into TEST values(sysdate);
4 end;
5 /
過程已創(chuàng)建。
創(chuàng)建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440'); --每天1440分鐘,即一分鐘運行test過程一次
3 end;
4 /
PL/SQL 過程已成功完成。
運行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 過程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時間 from TEST;
時間
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
刪除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 過程已成功完成。
3 上面的例子沒有涉及到存儲過程帶參數(shù)的問題,如果帶參數(shù)假設為
?MYPROC(?ina???????? IN? VARCHAR2,
------------------以下為必須輸出參數(shù)組---------------------------------
?outa OUT NUMBER,
?outb? OUT VARCHAR2)
則 在建立job的代碼中
創(chuàng)建JOB
begin
? sys.dbms_job.submit(job => :job,
????????????????????? what => '
?????????????????????????????declare?
????????????????????????????????????
????????????????????????????????????outa number; --定義輸出變量
?????????????????????????????????????outb varchar2(40);?
????????????????????????????begin?
??????????????????????????????????MYPROC(''輸入'',outa =>outa ,outb =>outb );?
????????????????????????????end;',
????????????????????? next_date => to_date('10-10-2006 08:48:34', 'dd-mm-yyyy hh24:mi:ss'),
????????????????????? interval => 'sysdate+1');
? commit;
end;
/