我有一个数据表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循环没有结束?但又找不到原因。
本人是自学菜鸟,期望哪位前辈高手指教。万分感谢。