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

          主站蜘蛛池模板: 贵南县| 临泽县| 桂阳县| 新民市| 筠连县| 昆明市| 上思县| 玉门市| 景洪市| 荆门市| 岫岩| 永德县| 平武县| 北票市| 霍城县| 许昌市| 威信县| 芦溪县| 肇源县| 张北县| 永善县| 漳浦县| 兴国县| 玉田县| 建湖县| 舒城县| 夏河县| 民和| 专栏| 阿城市| 敖汉旗| 东港市| 蛟河市| 通化市| 铜山县| 广丰县| 和顺县| 汶川县| 华蓥市| 沛县| 改则县|