`
ldl_xz
  • 浏览: 68834 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

mysql存储过程 定时任务

 
阅读更多
#处理采集数据
DROP PROCEDURE IF EXISTS do_collect_price;
CREATE PROCEDURE do_collect_price()
BEGIN 
    DECLARE flag INT DEFAULT 0;#声明游标循环标识
    DECLARE now_time INT DEFAULT UNIX_TIMESTAMP();#声明游标循环标识
    DECLARE start_time int DEFAULT UNIX_TIMESTAMP(date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now())-1 day),interval 1 month));
    DECLARE end_time int DEFAULT UNIX_TIMESTAMP(date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval 0 month));
    DECLARE percent FLOAT DEFAULT 0.1;#去除最高最低价格百分比
    DECLARE date_time char(8) DEFAULT extract(year_month from NOW());#当前年份月份201310
    DECLARE num int DEFAULT 0;#总数
    DECLARE t_cut int DEFAULT 0;#需要去掉的价格一半
    DECLARE t_total int DEFAULT 0;#有效价格总数
    DECLARE temp_Price DECIMAL(18,4);
    DECLARE tMaterialID char(30);
    DECLARE tMaterialName char(250);
    DECLARE tMaterialUnit char(150);
    DECLARE tMaterialFormat char(150);

    DECLARE cur CURSOR FOR SELECT MaterialID,MaterialName,MaterialUnit,MaterialFormat,count(MaterialID) as num FROM collect_price WHERE add_time > start_time AND add_time < end_time GROUP BY MaterialID,MaterialName,MaterialUnit,MaterialFormat;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;
    OPEN cur;
        #删除jcj_price当月价格包信息
        DELETE FROM jcj_price WHERE PriceMonth = date_time;
        #删除pricepacklist可用期间信息
        DELETE FROM pricepacklist WHERE packid = 1020 and packmonth = date_time;
        FETCH cur INTO tMaterialID,tMaterialName,tMaterialUnit,tMaterialFormat,num;
    WHILE flag <> 1 DO
        IF num < 3
            THEN
                select avg(MaterialPrice) from (select MaterialPrice from collect_price where add_time > start_time and add_time < end_time and MaterialID=tMaterialID and MaterialName=tMaterialName and MaterialUnit=tMaterialUnit and MaterialFormat=tMaterialFormat) p INTO temp_Price;
        ELSE
                SET t_cut = ROUND(num*percent);
                SET t_total = num - 2*t_cut;
                select avg(MaterialPrice) from (select MaterialPrice from collect_price where add_time > start_time and add_time < end_time and MaterialID=tMaterialID and MaterialName=tMaterialName and MaterialUnit=tMaterialUnit and MaterialFormat=tMaterialFormat order by MaterialPrice asc limit t_cut,t_total) p INTO temp_Price;
        END IF;

        insert into  jcj_price(MaterialID,PriceMonth,Price,MaterialName,MaterialUnit,MaterialFormat)values(tMaterialID,date_time,temp_Price,tMaterialName,tMaterialUnit,tMaterialFormat);

        FETCH cur INTO tMaterialID,tMaterialName,tMaterialUnit,tMaterialFormat,num;
    END WHILE;
    insert into pricepacklist(packid,packmonth,packver,packname,periodtype,enabled)values(1020,date_time,1,'',1,0);
    #备份收集数据
    #SELECT * INTO collect_price_bakup FROM collect_price WHERE add_time > start_time and add_time < end_time;
    #DELETE FROM collect_price WHERE add_time > start_time and add_time < end_time;
    CLOSE cur;
END

#call pricepack.do_collect_price()

转载自:http://www.9958.pw/post/mysql_procedure

分享到:
评论

相关推荐

    linux环境下mysql存储过程开启定时任务,bing log.rar

    在这个主题中,"linux环境下mysql存储过程开启定时任务,bing log.rar" 文件可能包含了关于如何在Linux系统中利用MySQL的存储过程创建定时任务,以及如何记录和分析这些任务日志(bing log)的详细步骤。 首先,让...

    springmvc+spring+mysql+maven定时任务

    在定时任务中,它通常用于存储和查询数据,例如记录任务执行状态、时间戳等。 `Maven`是项目管理和构建工具,它管理项目的依赖关系,提供了一套标准的方式来构建和打包Java项目。在本例中,Maven将帮助我们整合所有...

    analyData:这是一个java定时任务,定时调用mysql的存储过程

    本项目“analyData”就是一个使用Java实现的定时任务,它的主要功能是定期调用MySQL数据库中的存储过程,以执行数据分析或处理任务。下面我们将深入探讨这个项目涉及到的关键知识点。 1. **Java定时任务**: Java...

    详解SpringBoot 创建定时任务(配合数据库动态执行)

    此外,实现动态定时任务通常需要依赖一些数据库操作的库,比如这里使用的是Mybatis,它是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射。Mybatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果...

    Python定时任务,将xml报文解释入mysql数据库

    本话题聚焦于如何使用Python来创建定时任务,并将解析XML报文的数据存储到MySQL数据库中。这一过程涉及到多个知识点,包括Python的定时任务库如APScheduler、XML处理库如ElementTree,以及与MySQL数据库交互的库如...

    mysql存储过程(2)

    - 定期任务:结合事件调度器,存储过程可用于执行定时任务,如定期备份或清理过期数据。 10. **存储过程的调试** Navicat等工具提供了存储过程的调试功能,可以设置断点,逐行执行,查看变量值,便于定位问题。 ...

    MySQL定时执行脚本(计划任务)命令实例

    总结来说,MySQL的定时执行脚本功能通过`EVENT`对象提供了强大的定时任务能力,允许开发者按需设置执行频率,执行各种SQL操作,包括数据更新、备份、清理等。这不仅提高了效率,也降低了系统的复杂性。通过熟练掌握...

    spring+quartz动态定时任务创建 +mybatis

    同时,它支持存储过程、动态SQL以及自定义SQL的编写,灵活性很高。 **Quartz库** Quartz是一个开源的作业调度框架,它允许开发者安排和执行周期性的任务。Quartz支持多种调度策略,如简单的触发器、cron触发器等,...

    mysql七天定时下架任务

    本案例通过编写一个MySQL存储过程,并利用事件功能来实现这一需求。 #### 1.2 技术选型 - **MySQL**:作为数据库管理系统,用于存储岗位信息。 - **存储过程**:一种SQL代码块,可以接受输入参数,执行复杂的逻辑...

    mysql 实现定时给表追加分区

    实现mysql 每天定时自动给数据库表追加分区,包含存储计划和存储过程

    mysql数据库自动定时备份

    MySQL数据库的自动定时备份是数据库管理中的重要...综上所述,设置MySQL的自动定时备份涉及到`mysqldump`的使用、任务调度器的配置以及备份文件的管理和命名策略。通过合理规划,你可以确保数据库安全并随时可以恢复。

    定时任务.sql,便于学习查看存储过程

    mysql,定时任务,实现sql,包括建表语句,创建sql函数语句,创建事件语句,完整的一套sql语句

    Linux下如何实现Mysql定时任务

    在Linux环境中,MySQL数据库系统的定时任务执行是数据库管理员和运维人员常常需要面对的任务。本文将详细介绍两种实现MySQL定时任务的方法,一种是通过MySQL自身的Event Scheduler,另一种是利用Linux的Cron Job。 ...

    自动定时备份远程服务器的mysql数据库并存储在本地

    利用Linux的`cron`服务设置定时任务,例如每天凌晨1点运行备份脚本。在`crontab -e`命令中添加如下行: ``` 0 1 * * * /path/to/your/backup_script.sh &gt; /dev/null 2&gt;&1 ``` 这行命令会在每天的1点0分执行备份...

    spring-boot 定时任务集群

    本篇文章将深入探讨如何在Spring Boot 2.1.6版本中配置和管理定时任务,并实现任务的集群部署以及任务的持久化存储到MySQL数据库。 **一、Spring Boot定时任务** 1. **@Scheduled注解**:Spring Boot提供了对定时...

    Azkaban - 定时任务系统的配置与运行详解

    Azkaban 定时任务系统配置与运行详解 Azkaban 是一个开源的定时任务系统,用于管理和执行定时任务。下面将详细介绍 Azkaban 的配置和运行过程。 一、创建 Azkaban 用户 在 Linux 系统中,需要创建一个名为 ...

    mysql 定时远程备份

    ### MySQL定时远程备份知识点 #### 一、MySQL定时备份...综上所述,通过编写批处理脚本和创建Windows计划任务,可以实现MySQL数据库的定时远程备份。这种方法简单有效,适用于大多数中小型企业环境中的数据备份需求。

    MySQL存储过程培训

    该压缩包里面包括了一份MySQL存储过程的培训ppt文档和一份演示时所用的sql脚本。当然,部分涉及到业务的表和字段可能需要你们自己进行相关修改。还有就是可能文档中会出现错误,记得当时培训的时候出现了一个,当时...

    SpringCloudSchedule定时任务

    综上所述,通过Spring Cloud Schedule和MyBatis,我们可以方便地构建出按间隔时间或固定时间执行的定时任务,实现对MySQL数据库的高效读写。在实际开发中,可以根据业务需求灵活调整任务的执行策略,确保系统的稳定...

    mysql定时job

    mysql的定时job的一个简单应用,采用mysql存储过程的调用方式执行任务。该任务中涉及到使用游标来完成多个update执行过程。

Global site tag (gtag.js) - Google Analytics