zoukankan      html  css  js  c++  java
  • SQL存储过程小案例

    需求:系统有张表数据量特别大,现在打开列表展开数据特变慢,想按时间把部分数据迁移到新表,旧表数据删掉。

    写了一个存储过程

    create or replace procedure updateinsert is 
    begin 
     insert  into WF_WORK_HISTORY select  *  from  wf_work h   where     
     to_char(h.workcreatedate,'yyyy-MM-dd')<= to_char(sysdate-1000,'yyyy-MM-dd')and EXTERNALSYSTEMKEY is not null  ; 
    commit;
    DELETE  from   wf_work  h where     
     to_char(h.workcreatedate,'yyyy-MM-dd')<= to_char(sysdate-1000,'yyyy-MM-dd')  and EXTERNALSYSTEMKEY is not null  ;
    commit;
     
    end; 
    select distinct name From user_source where type = 'PROCEDURE';//查询存储过程

    sysdate获取当前日期。向前退了1000天,然后把当前日期的一千天以前的所有数据插入到新表中。后续做了删除操作

    (我在这里遇到一个低级的错误。我在一台开发服务器调试好了,直接把新建表通过导出sql,在新服务器上执行了下sql,没注意看新表和旧表数据列数有差异,导致一直报错,一直调试)

    创建好存储过程后,来新建定时任务:

        declare  job3  number; 
          begin 
          dbms_job.submit(job3,'updateinsert;',sysdate,'sysdate+1/1440');----这里直接调用创建好的test存储过程,档期日期的1分钟后执行一次
          commit; ----避免在plsql中点击提交按钮
          end;   
    SELECT t.* FROM  dba_jobs t   //查询所有任务
    这里是一些常用的定时任务相关命令
    begin
    DBMS_JOB.RUN(3); /*3 job的id*/ end; //触发定时任务 begin -- Call the procedure sys.dbms_job.remove(3); end; //删除定时任务
  • 相关阅读:
    Linux+postfix+extmail+dovecot打造基于web页面的邮件系统
    各种大型网站技术架构--摘抄
    会php不回缓存行吗?多重实现
    Nutch相关框架视频教程--说明
    Nginx 配置文件模板
    原创:CentOS6.4配置solr 4.7.2+IK分词器
    nutch2.2.1安装部署
    Android View绘制13问13答
    使用 MailOtto 做完美预加载
    ActiveAndroid:活性记录的风格ORM(对象关系映射)
  • 原文地址:https://www.cnblogs.com/sjzxs/p/12970928.html
Copyright © 2011-2022 走看看