mysql-MYSQL游标REPEAT循环后,无法得到字符串返回值。望指教,谢谢!
程序员文章站
2022-04-16 19:40:13
...
mysql返回值delphi存储过程循环
我有一个数据表zq
+-------+--------+--------------+---------+---------+--------+---------+| zq_id | zq_dm | zq_mc | zqlx_id | fllx_id | jys_id | zq_cxhq |+-------+--------+--------------+---------+---------+--------+---------+| 1 | 000001 | 平安银行 | 4 | 9 | 1 | 1 || 2 | 113001 | 中行转债 | 4 | 9 | 1 | 1 || 3 | 113005 | 平安转债 | 4 | 9 | 1 | 1 || 4 | 131800 | R-003 | 3 | 5 | 2 | 0 || 5 | 131801 | R-007 | 3 | 7 | 2 | 0 || 6 | 131802 | R-014 | 3 | 8 | 2 | 0 || 7 | 131809 | R-004 | 3 | 6 | 2 | 0 || 8 | 131810 | R-001 | 3 | 3 | 2 | 1 || 9 | 131811 | R-002 | 3 | 4 | 2 | 0 || 10 | 150124 | 建信50B | 5 | 10 | 2 | 0 || 11 | 510300 | 300ETF | 2 | 2 | 1 | 0 || 12 | 600893 | 航空动力 | 1 | 1 | 1 | 0 || 13 | 601318 | 中国平安 | 1 | 1 | 1 | 1 || 14 | 601872 | 招商轮船 | 1 | 1 | 1 | 1 |+-------+--------+--------------+---------+---------+--------+---------+
还有一个数据表jys
+--------+--------+-----------------------+| jys_id | jys_dm | jys_mc |+--------+--------+-----------------------+| 1 | SH | 上海证券交易所 || 2 | SZ | 深圳证券交易所 |+--------+--------+-----------------------+
我想将表zq中字段zq_cxhq为1的记录的zq_dm字段和对应的jys_dm提取出来组成字符串,所期望的结果应该是得到字符串"SH000001,SH113001,SH113005,SZ131810,SH601318,SH601872,"。
我的方法是:
CREATE DEFINER=`root`@`localhost` PROCEDURE `routine_Sshq`( OUT jyszqdm VARCHAR(100))BEGIN DECLARE zqdm VARCHAR(45); DECLARE jysdm VARCHAR(45); DECLARE jyszq VARCHAR(100); DECLARE done TINYINT(1) DEFAULT 0; DECLARE cur_zqhq CURSOR FOR SELECT zq_dm, jys_dm FROM zq LEFT JOIN jys ON jys.jys_id = zq.jys_id WHERE zq_cxhq = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN cur_zqhq; REPEAT FETCH cur_zqhq INTO zqdm, jysdm; IF done = 0 THEN SET jyszq = CONCAT(jyszq, jysdm, zqdm, ','); END IF; UNTIL done = 1 END REPEAT; SET jyszqdm = jyszq;END
在DELPHI XE2中,我将这个存储过程的返回值,赋值给Edit控件,但始终无法成功。
我将这个存储过程的最后一行改为: SET jyszqdm = 'abc'; 同样无法成功。
我怀疑是不是前面那个REPEAT循环没有结束?但又找不到原因。
本人是自学菜鸟,期望哪位前辈高手指教。万分感谢。