MYSQL 存储过程 范例

DROP PROCEDURE IF EXISTS jy_gm_data_push; delimiter // CREATE PROCEDURE jy_gm_data_push() BEGIN /* 定义变量一 */ DECLARE MC_CODE VARCHAR(35); DECLARE DGV_DODE VARCHAR(32); DECLARE PC_CODE VARCHAR(35); DECLARE PCL_UID INT(11); DECLARE PCL_CID INT(11); DECLARE _done int default 0; /* 游标 */ DECLARE _Cur CURSOR FOR SELECT dm.MAGNETIC_CODE AS MC_CODE, dm.DEV_GATEWAY_CODE AS DGV_DODE, pc.PARK_CAR_CODE AS PC_CODE FROM user_area ua LEFT JOIN park p ON p.AREA_ID = ua.AID LEFT JOIN park_car pc ON pc.PARK_ID = p.PARK_ID LEFT JOIN dev_magnetic dm ON dm.PARK_CAR_ID = pc.PARK_CAR_ID WHERE (ua.UID = '73' OR ua.UID = '82') AND dm.MAGNETIC_CODE IS NOT NULL; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET _done=1; SELECT max(pgr.PCL_ID) as PCL_ID INTO PCL_UID FROM push_gm_recode pgr LIMIT 0,1; SELECT max(psq.ID) as PSG_ID INTO PCL_CID FROM park_msg_queue psq LIMIT 0,1; /* 打开光标 */ OPEN _Cur; REPEAT FETCH _Cur INTO MC_CODE, DGV_DODE,PC_CODE; IF NOT _done THEN INSERT INTO push_gm_recode ( MAGNETIC_CODE, DEV_GATEWAY_CODE, PARK_CAR_CODE, EVENT, EVENT_TIME, PCL_ID, UPDATE_TIME, SERIAL_NO ) SELECT MC_CODE, DGV_DODE, PC_CODE, pcl.`STATUS`, pcl.TIME, max(pcl.ID) AS PCL_ID, now(), pcl.SERIAL_NO FROM park_msg_queue pcl WHERE pcl.DEVICE_CODE = MC_CODE AND (pcl.ID BETWEEN PCL_UID AND PCL_CID) GROUP BY pcl.TIME, pcl.`STATUS` ; UPDATE push_gm_recode SET PUSH_STATUS = 3 WHERE MAGNETIC_CODE = MC_CODE AND PUSH_ID NOT IN ( SELECT * FROM ( SELECT PUSH_ID FROM push_gm_recode WHERE MAGNETIC_CODE = MC_CODE GROUP BY `EVENT`, EVENT_TIME, MAGNETIC_CODE )s ); END IF; UNTIL _done END REPEAT; #当_done=1时退出被循 /*关闭光标*/ DELETE FROM park_msg_queue WHERE ID <= PCL_CID; CLOSE _Cur; END //
为梦想不止不休!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言