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 ;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了