mysql游标

UPDATE activities set keyword = REPLACE(keyword,',',',');




DROP PROCEDURE IF EXISTS myCursor;
CREATE PROCEDURE myCursor()
BEGIN
DECLARE done INT DEFAULT 0 ;
DECLARE tmpName VARCHAR(255) DEFAULT '' ;  
DECLARE deleted INT;
DECLARE counter INT DEFAULT 0;




DECLARE keyword0 VARCHAR(255) DEFAULT '' ;
DECLARE keyword1 VARCHAR(255) DEFAULT '' ;
DECLARE ttmpName VARCHAR(255) DEFAULT '' ; 
DECLARE oldcount INT DEFAULT 0;


DECLARE cur1 CURSOR FOR SELECT trim(keyword) AS keyword,is_deleted AS deleted FROM activities WHERE keyword IS NOT NULL AND trim(keyword) != '' AND is_deleted = 0;
##游标终止条件
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET counter = (SELECT count(*) FROM activities WHERE keyword IS NOT NULL AND trim(keyword) != ''  AND is_deleted = 0);
OPEN cur1;
FETCH cur1 INTO tmpName,deleted;
WHILE done != 1 and counter > 0 DO
##SELECT tmpName,deleted;
IF deleted = 0 THEN
SET ttmpName = tmpName;
WHILE ttmpName is not null and trim(ttmpName) != '' DO
SET keyword0 = trim(SUBSTRING_INDEX(ttmpName,',',1));
SET keyword1 = trim(SUBSTRING_INDEX(ttmpName,',',2));
SET oldcount = (select count(*) from keyword WHERE keyword = keyword0);
IF oldcount = 0 THEN
INSERT INTO keyword(keyword,count,is_deleted) VALUES(keyword0,1,0);
ELSE
UPDATE keyword SET count = (CASE WHEN count IS NULL THEN 1 ELSE count + 1 END) WHERE keyword = keyword0;
END IF;
SET ttmpName = (CASE WHEN keyword0 = keyword1 THEN '' ELSE trim(SUBSTR(ttmpName FROM CHAR_LENGTH(keyword0) + 2)) END);
END WHILE;
END IF;
FETCH cur1 INTO tmpName,deleted;
SET counter = counter - 1;
END WHILE;
CLOSE cur1;
END;
CALL myCursor();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值