oracle中建立job定期運行存儲過程總結

          Posted on 2006-10-09 09:28 Hally 閱讀(5897) 評論(0)  編輯  收藏 所屬分類: 學習隨筆

          1 首先查看


          SQL> show parameter job

          NAME???????????????????????????????? TYPE??????? VALUE
          ------------------------------------ ----------- ------------------------------
          job_queue_processes????????????????? integer???? 10

          如果值是 0 需要修改(如果為0則無法運行job,此值為允許同時運行的job數量)

          alter system set job_queue_processes =10; --或者其他值

          2 一個簡單例子:
            
            創建測試表
            SQL> create table TEST(a date);
            
            表已創建。
            
            創建一個自定義過程
            SQL> create or replace procedure MYPROC as
             2 begin
             3 insert into TEST values(sysdate);
             4 end;
             5 /
            
            過程已創建。
            
            創建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 上面的例子沒有涉及到存儲過程帶參數的問題,如果帶參數假設為
          ?MYPROC(?ina???????? IN? VARCHAR2,
          ------------------以下為必須輸出參數組---------------------------------
          ?outa OUT NUMBER,
          ?outb? OUT VARCHAR2)

          則 在建立job的代碼中
          創建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;
          /

          posts - 43, comments - 200, trackbacks - 0, articles - 2

          Copyright © Hally

          主站蜘蛛池模板: 无棣县| 达拉特旗| 石林| 广平县| 永登县| 景宁| 长白| 南岸区| 大厂| 通江县| 汉寿县| 喀喇沁旗| 景东| 郁南县| 清徐县| 镇宁| 大冶市| 浦江县| 玛多县| 霞浦县| 三原县| 汽车| 北宁市| 资中县| 塔城市| 高淳县| 建始县| 清新县| 怀安县| 西乌珠穆沁旗| 金寨县| 金坛市| 泰来县| 昌黎县| 和硕县| 南澳县| 石城县| 陈巴尔虎旗| 西丰县| 马龙县| 聊城市|