oracle定时执行怎么执行多个存储过程

如题所述

定时执行存储过程,需要在job里定义;而执行多个存储过程,则在job中定义多次即可。

运行环境:oracle 10g

1、定义其中一个job

declare
  jobno number;
begin
  dbms_job.submit(11,
                  what      => 'pro_bdc_bh(
  to_char(add_months(trunc(sysdate),-1),''yyyy''),
  to_char(add_months(trunc(sysdate),-1),''MM''),
  ''true''
  );',
                  next_date => sysdate,
                  Interval  => 'TRUNC(sysdate) + 1 +2 / (24)');
  commit;
end;

注意:其中pro_bdc_bh为存储过程名称,TRUNC(sysdate) + 1 +2 / (24)为定义的运行时间为每日凌晨2点。

2、然后定义另外一个job

declare
  jobno number;
begin
  dbms_job.submit(11,
                  what      => 'p_test(
  to_char(add_months(trunc(sysdate),-1),''yyyy''),
  to_char(add_months(trunc(sysdate),-1),''MM''),
  ''true''
  );',
                  next_date => sysdate,
                  Interval  => 'TRUNC(sysdate) + 1 +2 / (24)');
  commit;
end;

注意:这次运行的存储过程名为p_test,运行时间同样为每日凌晨2点。

3、创建job完成后,可通过具有创建job的账号查询创建是否成功,语句如下:

select * from user_jobs;
温馨提示:内容为网友见解,仅供参考
无其他回答

oracle定时执行怎么执行多个存储过程
定时执行存储过程,需要在job里定义;而执行多个存储过程,则在job中定义多次即可。运行环境:oracle 10g 1、定义其中一个job declare jobno number;begin dbms_job.submit(11, what => 'pro_bdc_bh( to_char(add_months(trunc(sysdate),-1),''yyyy''), to_char(add_months(trunc...

是不是一个JOB只能定时执行一个存储过程
定时执行存储过程,需要在job里定义;而执行多个存储过程,则在job中定义多次即可。运行环境:oracle 10g 1、定义其中一个job 1 2 3 4 5 6 7 8 9 10 11 12 13 declare jobno number;begin dbms_job.submit(11,what => 'pro_bdc_bh(to_char(add_months(trunc(sysdate),-1),''yyyy''...

oracle每隔一小时执行一次定时任务,批量执行语句
create table a(a date);create or replace procedure test as begin insert into a values(sysdate);end;

怎样使用oracle自动执行存储过程?
创建存储过程:首先需要创建一个需要定时执行的存储过程。创建作业:使用DBMS_SCHEDULER创建一个作业,指定需要执行的存储过程和执行时间。例如,可以创建一个每天固定时间执行的作业。BEGINDBMS_SCHEDULER.CREATE_JOB ( job_name => 'MY_JOB', job_type => 'STORED_PROCEDURE', job_actio...

oracle存储过程批量执行
使用一个循环 begin for r in (select a1,b1 from tt where 条件)loop --执行a a(r.a1,r.b1);end loop end;

Oracle 延时执行问题求指教:
思路:存储过程P1取当前时间,取A表设置延后的时间,然后循环判断,直到达到执行存储P2的时间,则停止循环开始执行P2,最后完成P1的执行。

oracle存储过程同时被多个进程调用时,在存储过程里,用什么方法可以保证...
你可以设置一个全局变量参数,如LV_COUNT:=0,假设有三个过程P1\\P2\\P3希望按顺序执行,每个过程在执行开始首先判断LV_COUNT的值,如果是0,P1执行,执行后把LV_COUNT置为1;如果是1,P2执行,执行后把LV_COUNT置为2;如果是2,P3执行,执行后把LV_COUNT再次置为0,可以开始下一次循环。

Oracle执行\/调用存储过程
使用EXECUTE命令进行执行相对简单,只需在命令后面输入存储过程名称即可。让我们通过一个示例进行说明。实例:执行pro_insertDetp存储过程 首先,创建一个存储过程,用于向dept表中插入一条记录,代码如下:执行此命令:EXECUTE pro_insertDept;可以在PL\/SQL程序块中调用存储过程。例如,使用以下步骤:设置服务...

请教执行多个oracle存储过程的事务问题
你这样属于2个事务在操作一个表。如果表中有唯一键,会有一个过程失败的。如果没有唯一键,会写入20000条记录。但是如果存储过程里操作的表是动态传进去的。如果表名不同,同时执行多个这个存储过程是没有影响的。

oracle存储过程如何并行?
A1 A2 A3也是存储过程吗? job其实上也只是分别调用这几个过程来执行,而不是靠执行一个A就可以让所有A1 2 3 4 并行执行的。 如果A1 2 3 4都是需要参数的话,那么你也只有用A分开给每一个都传递参数,否则的话也是不能并行执行的。 例如:declare n number begin dbms_job.submit('a1;a2;...

相似回答