Oracle開発記事+ JOBのバッチ作成(軽量)

説明:この記事では、PL / SQLの開発の初心者のためのガイドブックです。
タグ:PL / SQL、JOB、軽量、無名ブロック、パイプ、パイプラインのバッチ作成
の説明:軽量ジョブは、複数の頻繁に実行される小さな仕事に適している。
簡単に学習:テキストの削除初心者が一目で理解できるように、不要な部分がなくなりました。
ウォームリマインダー:この記事の記述に問題がある場合、またはより良い書き方がある場合は、メッセージを残すか、プライベートを送信してください。変更および最適化するためのメッセージ


-通常のストアドプロシージャを作成します

set serveroutput on
set timing on

create or replace  procedure  p_select
is
  i        simple_integer := 1;
  j        simple_integer := 2000000000;
  v        simple_integer := 0;
  message  char(10);
  pipename char(20) := 'pipe_zzt_select';
begin
  for i in 1 .. j loop
    select /*+ no_result_cache */
     count(*) into v
      from zzt.info a, zzt.info b
     where a.sal != b.sal
       and a.id < 100
       and a.sal < 50000;
    if dbms_pipe.receive_message(pipename, 0) = 0 then
      dbms_pipe.unpack_message(message);
      exit when message = 'stop';
    end if;
  end loop;
  v := dbms_pipe.remove_pipe(pipename);
end;
/


-軽量ジョブに必要なストアドプロシージャ/変換ルーチンを作成します

EXEC DBMS_SCHEDULER.DROP_PROGRAM('ZZT_P_L_SELECT');

begin
  dbms_scheduler.create_program(program_name   => 'ZZT_P_L_SELECT',
                                program_type   => 'STORED_PROCEDURE',
                                program_action => 'ZZT.P_SELECT',
                                enabled        => true,
                                comments       => 'lightweight job program');
end;
/

select count(*) from dba_scheduler_programs where PROGRAM_NAME='ZZT_P_L_SELECT';


-軽量ジョブをバッチで作成

declare
  i          simple_integer := 1;
  j          simple_integer := 20;
  interval   varchar2(50) := 'freq=secondly;interval=60';    --间隔xx秒
  starttime  date := sysdate;                        --立即开始执行
  endtime    date := sysdate + 1 / 24 / 60 * 10;    --持续10分钟
  v_job_name varchar2(30);
begin
  for i in 1 .. j loop
    v_job_name := 'ZZT_JOB_A_' || i;
    dbms_scheduler.create_job(job_name        => v_job_name,
                              program_name    => 'ZZT_P_L_SELECT',
                              job_style       => 'LIGHTWEIGHT',
                              repeat_interval => interval,
                              start_date      => starttime,
                              end_date        => endtime,
                              enabled         => true,
                              comments        => 'zzt测试lightweight-job');
  end loop;
end;
/

 

-
查看相関連信息selectcount(*)from dba_scheduler_jobs j where j.owner = 'ZZT' and j.JOB_STYLE = 'LIGHTWEIGHT';
select * from dba_scheduler_jobs j where j.owner = 'ZZT' and j.JOB_STYLE = 'LIGHTWEIGHT';
select * from dba_scheduler_running_jobs;
 


※記事が上手く書かれていると思われる場合は、記事の最後で著者に親指を立てることを忘れないでください〜

以上

おすすめ

転載: blog.csdn.net/zzt_2009/article/details/112388486