説明:この記事では、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;
※記事が上手く書かれていると思われる場合は、記事の最後で著者に親指を立てることを忘れないでください〜
以上