zoukankan      html  css  js  c++  java
  • MySQL 存储过程,游标,临时表创建

    -- --------------------------------------------------------------------------------
    -- Routine DDL
    -- Note: comments before and after the routine body will not be stored by the server
    -- --------------------------------------------------------------------------------
    DELIMITER $$
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `filter_record_time`(startTime timestamp, endTime timestamp, pointIndex int)
    BEGIN  
            declare _recordtime timestamp;
            declare _pointIndex smallint;
            declare _value double;
            declare _result text;
            declare _previoustime timestamp;
            DECLARE done INT DEFAULT FALSE;
            
    
            declare fetchSeqCursor cursor for select distinct RecordTime,PointIndex,Value
                                                from flow_record 
                                               where recordtime >= startTime 
                                                 and recordtime < endTime
                                                 and pointIndex = pointIndex 
                                                 and recordtime is not null
                                            order by recordtime;
            
            DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
            create table if not exists filter_record_time_temp(timeFrom timestamp, timeTo timestamp, times int);
        
            open fetchSeqCursor;
            
            
            seq_loop:loop
                fetch fetchSeqCursor into _recordtime, _pointIndex, _value;
    
                IF done THEN
                    LEAVE seq_loop;
                END IF;
    
                if _previoustime is null then
                    if _recordtime <> startTime then
                        insert into filter_record_time_temp select startTime timefrom, _recordtime timeto, 
                                cast((unix_timestamp(_recordtime) - unix_timestamp(startTime) - 120) / 120 as signed)  times;
                    end if;
                else 
                    if unix_timestamp(_previoustime) + 120 < unix_timestamp(_recordtime) then
                        insert into filter_record_time_temp select _previoustime timefrom, _recordtime timeto,
                                cast((unix_timestamp(_recordtime) - unix_timestamp(_previoustime) - 120) / 120 as signed) times;
                    end if;
                end if;
    
                set _previoustime = _recordtime;
            end loop;
    
            close fetchSeqCursor; 
    
            if unix_timestamp(_previoustime) + 120 < unix_timestamp(endTime) then
                insert into filter_record_time_temp select _previoustime timefrom, endTime timeto,
                                cast((unix_timestamp(endTime) - unix_timestamp(_previoustime) - 120) / 120 as signed) times;
            end if;
    
            select * from filter_record_time_temp;
    
            drop table if exists filter_record_time_temp;
    
    END

    真尼玛烦人,各个数据库sql语法都不一致,写一点东西查半天资料,耽误时间.

  • 相关阅读:
    rem布局原理
    vue引入bootstrap.min.css报错:Cannot find module "./assets/css/bootstrap.min.css"
    安装cnpm
    安装webpack出现警告: fsevents@^1.0.0 (node_moduleschokidar ode_modulesfsevents):
    npm run dev报错,events.js:160 throw er; // Unhandled 'error' event
    让webstorm支持新建.vue文件
    电脑上已经安装mysql之后安装wamp,wamp中的mysql无法启动的解决办法
    Hibernate
    C和指针
    如何测试一个杯子
  • 原文地址:https://www.cnblogs.com/sskset/p/3644710.html
Copyright © 2011-2022 走看看