关于oracle存储过程和触发器

下面实现的功能是:如果test表中的两列sum值相除结果小于0.99,则将分子的所有值增大0.5%

1. 创建存储过程

create or replace procedure proc_update_test  as
countvalue number;
sqlstr varchar2(2000);
begin
    sqlstr := 'select sum(braod_suc_num)/sum(try_broad_num)  from test where trunc(start_time,''dd'')=trunc(sysdate-1,''dd'')';
    EXECUTE IMMEDIATE sqlstr into countvalue ;
    if countvalue<0.99
       then
       update test set braod_suc_num = braod_suc_num*1.005 where trunc(start_time,'dd')=trunc(sysdate-1,'dd');
       commit;
    else
      null;
    end if;
end;


2. 创建定时任务job   -- 在CommondSql 窗口中执行,设置每天下午16:20执行
declare
   job number ;
 begin
   dbms_job.submit(job, 'proc_update_test ;', sysdate, 'TRUNC(SYSDATE + 1) + (16*60+20)/(24*60)');
   commit;
  end;
  /

 
2.1 查看该任务的job 号

select * from dba_jobs where what = 'proc_update_test;';   ---查job字段

2.1 通过命令启动任务
    在CommondSql窗口执行
    begin
     dbms_job.run(jobno);
    end;
    /
    
2.2 在PL/SQL中启动任务

    找jobs文件夹下的相应job对应的job编号,右键->run

----------------------------下面借鉴他人成果------------------------------------------------------------------------

 删除job:dbms_job.remove(jobno);   
     修改要执行的操作:job:dbms_job.what(jobno,what);   
  修改下次执行时间:dbms_job.next_date(job,next_date);   
  修改间隔时间:dbms_job.interval(job,interval);   

停止job:dbms.broken(job,broken,nextdate);   
启动job:dbms_job.run(jobno);   

修改job_queue_processes的值:(保证其不为0否则JOB不自动运行)  


补充: 
描述                    INTERVAL参数值 
每天午夜12点            ''TRUNC(SYSDATE + 1)'' 
每天早上8点30分         ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'' 
每星期二中午12点         ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24'' 
每个月第一天的午夜12点    ''TRUNC(LAST_DAY(SYSDATE ) + 1)'' 
每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24'' 
每星期六和日早上6点10分    ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''
<pre name="code" id="best-answer-content" class="reply-text mb10" style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; font-family:Arial; white-space:pre-wrap; word-wrap:break-word; zoom:1; line-height:22px">--删除定时任务,括号里为user_jobs表中job字段的编号
exec dbms_job.remove(61);

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值