mysql 过程

复制代码
CREATE DEFINER=`root`@`%` PROCEDURE `tt2`(
    out  o_ret      int
)
task:begin

        set @v_r = '0_2_123';
        if(@v_r is not null and '' <> @v_r) then
                set o_ret = 1;
        else
                set o_ret = 2;
        end if;
end
复制代码
call tt2(@ret);
select @ret;

 

复制代码
CREATE DEFINER=`root`@`%` PROCEDURE `p_olps_fetch_portrait_task`(
    in   i_task_type    varchar(128),
    in   i_task_id      varchar(64),
    in   i_proc_seq     int,
    out  o_task_id      varchar(64)
)
label_olps_fetch_portrait_task:begin
    declare v_sql         varchar(1024);
    declare v_name        varchar(32);
    declare v_task_id     varchar(64);
    declare v_cnt         int default 0;
    declare v_ret         int default -1;
    
    set v_name = 'olps_fetch_portrait_task';
    
    set o_task_id = '';

    call p_add_log(7, v_name, concat('params i_task_type:', i_task_type, ', i_proc_seq:', i_proc_seq, ', i_task_id:', i_task_id));
    
    
    if(i_task_id is not null and '' <> i_task_id) then
        call p_imp_olps_fetch_portrait_task(i_task_type, i_task_id, i_proc_seq, v_ret);
    end if;
    if v_ret > 0 then
            set o_task_id = i_task_id;
        leave label_olps_fetch_portrait_task;
    end if;
    
    select task_id into v_task_id from t_object_export_task where status='START' order by create_time asc limit 1;
    set v_cnt = FOUND_ROWS();
    if v_cnt > 0 then
        call p_imp_olps_fetch_portrait_task(i_task_type, v_task_id, i_proc_seq, v_ret);
    end if;
    
    if v_ret > 0 then
        set o_task_id = v_task_id;
        leave label_olps_fetch_portrait_task;
    end if;
    
end
复制代码
复制代码
CREATE DEFINER=`root`@`%` PROCEDURE `p_imp_olps_fetch_portrait_task`(
    in   i_task_type    varchar(64),
    in   i_task_id      varchar(64),
    in   i_proc_seq     int,
    out  o_ret          int
)
label_imp_olps_fetch_portrait_task:begin
    declare v_sql       varchar(1024);
    declare v_name      varchar(32);
    declare v_task_type varchar(64) default '1';
    declare v_cnt       int default 0;
    declare v_seq       int default 0;
    declare v_now       bigint default 0;
    
    set v_task_type = i_task_type;
    set v_name = 'imp_olps_fetch_portrait_task';
    set o_ret = 0;
    
    call p_add_log(7, v_name, concat('params i_task_id:', i_task_id));
    
    
    if(i_task_id is null or '' = i_task_id) then
        call p_add_log(3, v_name, 'i_task_id error.');
        leave label_imp_olps_fetch_portrait_task;
    end if;
    
    
    set v_cnt = 0;
    select proc_seq into v_seq from `t_offlinetask_apply` where task_id = i_task_id and task_type= v_task_type and lock_status=1;
    set v_cnt = FOUND_ROWS();
    if v_cnt > 0 then
        call p_add_log(3, v_name, concat('task_id:', i_task_id, ' is locked by seq:', v_seq));
        leave label_imp_olps_fetch_portrait_task;
    end if;
    
    start transaction;
    
        update `t_object_export_task` set status='WORK' where task_id = i_task_id and status='START';
    
        set v_now = UNIX_TIMESTAMP() * 1000;
        insert into `t_offlinetask_apply` values(v_task_type, i_task_id, i_proc_seq, v_now, 0, 1, '');
    commit;
    
    
    set v_cnt = 0;
    select count(1) into v_cnt from `t_offlinetask_apply` where task_type = v_task_type and task_id = i_task_id and lock_status=1 and proc_seq = i_proc_seq;
    if v_cnt = 0 then
        call p_add_log(3, v_name, concat('task_id:', i_task_id, ' locked failed.'));
        leave label_imp_olps_fetch_portrait_task;
    end if;
    
    set v_cnt = 0;
    select count(1) into v_cnt from `t_object_export_task` where task_id = i_task_id and status='WORK';
    if v_cnt = 0 then
        call p_add_log(3, v_name, concat('task_id:', i_task_id, ' updated failed.'));
        leave label_imp_olps_fetch_portrait_task;
    end if;
    
    
    set o_ret = 1;
    
end
复制代码
复制代码
CREATE DEFINER=`root`@`%` PROCEDURE `p_add_log`(
    in   log_level      int, 
    in   proc_name      varchar(32),
    in   log_info       varchar(2048)
)
lable_p_add_log:
begin
    declare v_err int default 0;
    declare v_logname varchar(64);   
    declare v_sql varchar(2048);
    
    declare continue handler for sqlexception set v_err=1;
    
      
    set v_logname = concat('t_log_',DATE_FORMAT(CURDATE(), '%Y%m')); 
    set v_sql = concat(' insert into ',v_logname,'(log_level,proc_name,log_info) values(',log_level,',''',proc_name,''',''',log_info,''')');
    set @v_sql=v_sql;
    prepare stmt from @v_sql;
    EXECUTE stmt;
    deallocate prepare stmt; 
    if v_err =1 then
        set v_sql =concat('create table ',v_logname,     
        '(log_id    BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        log_time  TIMESTAMP  NOT NULL default now(),
        log_level int not null, 
        proc_name varchar(32) not null,
        log_info  varchar(2048) null)');
        set @v_sql=v_sql;
        prepare stmt from @v_sql;
        EXECUTE stmt;
         
        
        set v_sql = concat(' insert into ',v_logname,'(log_level,proc_name,log_info) values(',log_level,',''',proc_name,''',''',log_info,''')');
        set @v_sql=v_sql;
        prepare stmt from @v_sql;
        EXECUTE stmt; 
        deallocate prepare stmt;  
    end if;
end lable_p_add_log
复制代码

 

#查询大于2016-03-05的数据(schedule_time long类型秒)

SELECT * FROM `tableName` where FROM_UNIXTIME(schedule_time, '%Y-%m-%d %H:%m:%s') > '2016-03-05 23:59:59' ORDER BY create_time ASC ;

posted @   酸牛奶  阅读(134)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示