oracle 数据库存储过程及任务调用

在oracle数据库中,可以通过创建dbms作业的方式进行定时存储过程的调用,但是如何创建呢?虽然网上有一些资料,但是语法还是比较'奇葩',试了很多遍才弄好,具体情况看图片就可以了。

 

输入要在作业中运行的plsql :procedure_statistic_result; /*****(存储过程名称,多个可以用分号隔开,本例只有一个)*****/

开始日期:trunc(sysdate) + 22/24;/*本日的22点运行第一次*/
下一日期:trunc(sysdate) + 22/24+1;//下一个日期的22点运行

 

oracel 存储过程:

create or replace
PROCEDURE PROCEDURE_STATISTIC_RESULT AS 
  result varchar2(100);--执行结果
  v_count integer := 0;
  v_rownum integer := 0;
  cursor sdyz_cursor is select w.shengdaoyuzhong,count(w.movie_id) as moviecount from v_programlayer_sdyz w , movie b where w.movie_id = b.movie_id  group by w.shengdaoyuzhong;
  cursor zmyz_cursor is select w.zimuyuzhong,count(w.movie_id) as moviecount from v_programlayer_zmyz w , movie b where w.movie_id = b.movie_id  group by w.zimuyuzhong;
BEGIN
  /**--------------------------声道语种统计----------------------------**/
  select count (1) into v_count from T_RESULT_STATISTIC t where t.resulttype = 'shengdaoyuzhong';
  IF v_count > 0 THEN
     delete from T_RESULT_STATISTIC t where t.resulttype = 'shengdaoyuzhong';     
  END IF ;
  FOR sdyz IN sdyz_cursor LOOP
    insert into T_RESULT_STATISTIC (id,createdate,moviecount,yuzhong,resulttype) values (sys_guid(),sysdate,sdyz.moviecount,sdyz.shengdaoyuzhong,'shengdaoyuzhong');
    v_rownum := v_rownum+1;
    if mod(v_rownum,500) = 0 then
      commit;
    end if;
  END LOOP ;
  /**-----------------------字幕语种统计-----------------------**/
 select count(1) into v_count from T_RESULT_STATISTIC t where t.resulttype = 'zimuyuzhong';
  IF v_count > 0 THEN
     delete from T_RESULT_STATISTIC t where t.resulttype = 'zimuyuzhong';     
  END IF ;
  v_rownum := 0;
  FOR zmyz IN zmyz_cursor
  LOOP
    insert into T_RESULT_STATISTIC (id,createdate,moviecount,yuzhong,resulttype) values (sys_guid(),sysdate,zmyz.moviecount,zmyz.zimuyuzhong,'zimuyuzhong');
     v_rownum := v_rownum+1;
    if mod(v_rownum,500) = 0 then
      commit;
    end if;
  END LOOP ;
  if v_rownum >0 then
    commit;
  end if;
  result := 'success';
  dbms_output.put_line(result);
  exception
   when others then 
   result := 'error';
   dbms_output.put_line(result);
END PROCEDURE_STATISTIC_RESULT;

  

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值