zoukankan      html  css  js  c++  java
  • Oracle定时任务小案例

    需求简述

    一个数据表中包含此数据的录入时间,此数据的初始状态是有效,五天后系统自动置该数据的状态为无效

    方案

    1. 写一个存储过程,用于更新字段(改状态);
    2. 写一个job,用于定时执行存储过程;

    方案逻辑

    存储过程

    1. 前提条件:此数据的状态为有效状态;
    2. 获取当前系统时间;
    3. 获取数据输入时间;
    4. 计算二者差值;如果二者差值大于5,置数据状态为无效,反之,不做操作。

    Job

    1. 设置每天0:00自动执行存储过程;(为了尽快看到测试结果,这里设置时间为每分钟执行一次job。)

    测试小案例

    1. 创建表
    --创建表
    create table test(name varchar2(30), passwd varchar2(30),inputtime date,status varchar2(2));
    
    1. 插入数据
    --插入数据
    declare 
         c_name varchar2(30) := 'TestUser';
         c_pass varchar2(30) := 'TestPass';
         c_inputTime date;
         c_status varchar2(2) := '01';
    begin
      select sysdate into c_inputTime from dual;
         for i in 0..99 loop
           c_name := c_name || to_char(i);
           c_pass := c_pass || to_char(i);
           c_inputTime := c_inputTime-1;
           dbms_output.put_line('name='||c_name||', passWd='||c_pass||', inputtime='||c_inputTime||' status='||c_status);
           insert into test (name,passwd,inputtime,status) values (c_name,c_pass,c_inputTime,c_status);
           c_name := 'TestUser';
           c_pass := 'TestPass';
         end loop;
         commit;
    end;
    
    1. 存储过程
    --创建存储过程,用于更新status
    create or replace procedure pro_test is
    begin
    declare
      NUM number :=5;
      d date;
      cursor cur_test is 
      select name,inputtime,status from test where status='01' order by inputtime desc;--创建游标,用于存储结果集
      begin
      select sysdate into d from dual;--获取系统时间
      for temp in cur_test
        loop
          if round(to_number(d-temp.inputtime))>NUM then
            update test set status='00' where name = temp.name;--更新表数据
          end if;
        end loop;
        commit;--提交事务
      end;
    end pro_test;
    
    1. 定时任务
    declare
        job_test number;
    begin
        dbms_job.submit(job_test, 'pro_test;',sysdate, 'sysdate+1/24/60');--每分钟执行一次
    end;
    
  • 相关阅读:
    Chrome cookies folder
    Fat URLs Client Identification
    User Login Client Identification
    Client IP Address Client Identification
    HTTP Headers Client Identification
    The Personal Touch Client Identification 个性化接触 客户识别
    购物车 cookie session
    购物车删除商品,总价变化 innerHTML = ''并没有删除节点,内容仍存在
    453
    购物车-删除单行商品-HTMLTableElement.deleteRow()
  • 原文地址:https://www.cnblogs.com/pinnsvin/p/8557698.html
Copyright © 2011-2022 走看看