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

          Posted on 2006-10-09 09:28 Hally 閱讀(5902) 評論(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

          主站蜘蛛池模板: 九龙县| 融水| 威远县| 兴文县| 嘉定区| 射洪县| 杭锦旗| 台安县| 宜章县| 衡阳县| 珠海市| 沅江市| 南安市| 章丘市| 丰城市| 新龙县| 安化县| 闵行区| 桦甸市| 贵南县| 汝城县| 太湖县| 屏东市| 都江堰市| 汤阴县| 深泽县| 南雄市| 沽源县| 应城市| 军事| 赣州市| 龙里县| 三河市| 汉寿县| 台湾省| 阿克| 霞浦县| 栖霞市| 淮滨县| 汶上县| 临邑县|