mysql 游标不终止_mysql 游标问题,只走两步

在MySQL中创建了一个名为`f_changeIdsToValues`的函数,该函数使用游标从`line_station_info`表中获取stationName。然而,当通过参数传递ids时,函数只返回两行数据,而直接写死ids值则运行正常。问题可能出在游标的处理上。
摘要由CSDN通过智能技术生成

DELIMITER$$USE`amwellcustomline`$$DROPFUNCTIONIFEXISTS`f_changeIdsToValues`$$CREATEDEFINER=`root`@`%`FUNCTION`f_changeIdsToValues`(idsVARCHAR(50))RETURNSVARCHAR(500)CHARS...

DELIMITER $$

USE `amwellcustomline`$$

DROP FUNCTION IF EXISTS `f_changeIdsToValues`$$

CREATE DEFINER=`root`@`%` FUNCTION `f_changeIdsToValues`(ids VARCHAR(50)) RETURNS VARCHAR(500) CHARSET utf8

BEGIN

DECLARE stationsName VARCHAR(500) DEFAULT ''; -- 站台名称集合

DECLAREv_stationsName VARCHAR(50) DEFAULT ''; -- 站点名字

-- 定义游标结束标识

DECLARE STOP INT DEFAULT 0;

DECLARE cur CURSOR FOR (SELECT stationName FROM line_station_info WHERE POSITION(CONCAT(stationinfoid) IN ids)!=0 ORDER BY FIELD(stationinfoid,ids)) ;

-- DECLARE cur CURSOR FOR (SELECT stationName FROM line_station_info WHERE stationinfoid IN ('140820153535677000','140820153535742001','140820153535784002')) ;

-- 声明游标的异常处理,设置一个终止标记

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET STOP = 1;

-- 打开游标

OPEN cur;

FETCH cur INTO v_stationsName;

WHILE STOP <> 1 DO

SET v_stationsName = CONCAT(v_stationsName ,"-") ;

SET stationsName = CONCAT(stationsName,v_stationsName) ;

-- 获取下一行数据。

FETCH cur INTO v_stationsName;

END WHILE;

-- 关闭游标

CLOSE cur;

RETURN stationsName;

END$$

DELIMITER ;

如果我把ids传过来,不管传多少个,只会有两条结果,如果直接写死(上面有注释),就运行正常,求高手解答..不好意思,没份数了

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值