首页 技术 正文
技术 2022年11月6日
0 收藏 661 点赞 552 浏览 784 个字
DELIMITER $$DROP PROCEDURE IF EXISTS `curTest`$$CREATE PROCEDURE curTest(IN _myId INT)
BEGIN
DECLARE ids VARCHAR(20);
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 定义游标
DECLARE cur CURSOR FOR SELECT GROUP_CONCAT(id) FROM detail WHERE splitFlag=1 AND myId=_myId GROUP BY code;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
updateLoop:LOOP
FETCH cur INTO ids;
-- 跳出循环
IF done THEN
LEAVE updateLoop;
END IF;
-- 业务开始
UPDATE detail a,
(SELECT nos,id FROM detail WHERE FIND_IN_SET(id,ids) ORDER BY LENGTH(nos) DESC LIMIT 0,1) b
SET a.nos= b.nos WHERE FIND_IN_SET(a.id,ids); END LOOP;
CLOSE cur;
END$$DELIMITER ;

注意:

1.变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!

2.变量定义顺序不对会报错 “Variable or condition declaration after cursor or handler declaration

报错参见:http://stackoverflow.com/questions/18780974/mysql-error-1337

参考:http://www.cnblogs.com/trying/p/3296793.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918