mysql游标拼接字段_mysql存储过程用游标解决返回的结果级并拼装字符 | 学步园...

1.昨天遇到到一个问题.提问没有人回复,那个郁闷啊,无奈只有自己晚上回去自己解决.

得出解决办法,希望可以帮到和我遇到同意问题的同学们.也当自己的笔记记录吧.

BEGIN

##输入参数 '',29(用户id),'zxx-sxjcjy-34752-34752-34754-29'(courseid)

DECLARE done INT DEFAULT 0;

DECLARE classIds varchar(500) DEFAULT ''; ##班级id字符型

DECLARE classIdsNew varchar(500) DEFAULT '';

DECLARE classIdsAll varchar(500) DEFAULT '';

DECLARE classIdsAllNew varchar(500) DEFAULT '';## classIds 截取字符后的 aa,bb 形式

DECLARE dateNew LONG; ##当前时间long型

DECLARE dateNewString VARCHAR(100) DEFAULT ''; ##当前时间

DECLARE endDateString VARCHAR(100) DEFAULT ''; ##结束时间 :比当前时间多 7天

##创建游标

DECLARE mycursor CURSOR FOR

select teaching_class_id from sxjcjy_t_teaching_class_user_relation where user_id = userId and course_id = courseId;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done =1;

##把当前系统时间转为long型 以便下面使用

set dateNew = UNIX_TIMESTAMP(curdate()) *1000;

##得到当前系统时间 2013-09-29 15:46:59 型 下面用

set dateNewString = NOW();

##结束时间 :比当前时间多 7天 下面添加数据时用

set endDateString = date_add(NOW(), interval 7 Day);

##给讨论里面插入数据

##1.根据courseId和userId得到courseName

select course_name into courseName from sxjcjy_t_course_user_relation where course_id = courseId and user_id = userId limit 1;

##2.根据courseId和userId得到学科下的classId(字符串)多个

OPEN mycursor;##启动游标

REPEAT

FETCH mycursor INTO classIdsNew;

IF NOT done THEN

set classIdsNew = CONCAT(classIdsNew,",");

set classIdsAll = CONCAT(classIdsAll,classIdsNew);##合并字符串

set classIdsAllNew = `LEFT`(classIdsAll,LENGTH(classIdsAll)-1);##截取字符串

END IF;

UNTIL done END REPEAT;

CLOSE mycursor;

insert into sxjcjy_t_bbs_topic(course_id,course_name,title,creater_id,creater_name,content,view_count,create_time,class_id)

values(courseId,courseName,'信息技术基础上完后大家觉得都学到些什么呢?',userId,userName,'信息技术基础上完后大家觉得都学到些什么呢?',0,dateNew,classIdsAllNew);

END

1.原因是insert into 语句里面有个字段是 aa,bb 这中存储的,所以需要拼接字符串.(木有办法啊,淫家数据库是这样设计的)

2.注:DECLARE这种声明的变量包括游标 都必须在存过的最上面,BEGIN 的下面.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值