mysql自定义函数,根据id返回一个查询语句的拼接的两个字段的内容的之和用逗号分隔
/*DROP FUNCTION IF EXISTS fun_findInviteNameById $$*/
DELIMITER $$
CREATE FUNCTION fun_findInviteNameById(tdid VARCHAR(32))
RETURNS VARCHAR(256)
BEGIN
/*定义结果集*/
DECLARE result VARCHAR(256) DEFAULT '' ;
DECLARE temp VARCHAR(8) DEFAULT '' ;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
/*定义游标*/
DECLARE cur CURSOR FOR SELECT c.nickname FROM counselor c JOIN bid b ON c.id = b.cid WHERE b.sid IS NULL AND b.tdid = tdid;
/*将结束标志绑定到游标*/
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
/*打开游标*/
OPEN cur ;
/*开始循环*/
looplabel:LOOP
-- 声明结束的时候
FETCH cur INTO temp;
IF done THEN
LEAVE looplabel;
ELSE
SET result =CONCAT(temp,',',result);
END IF;
END LOOP looplabel;
CLOSE cur;
RETURN result;
END$$
DELIMITER ;
DELIMITER $$
CREATE FUNCTION findUnitName(aid VARCHAR(12))
RETURNS VARCHAR(256)
BEGIN
/*定义结果集*/
DECLARE result VARCHAR(256) DEFAULT '' ;
DECLARE temp VARCHAR(8) DEFAULT '' ;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
/*定义游标*/
DECLARE cur CURSOR FOR SELECT t3.ccName
FROM t_courseware_attachment t2
JOIN t_courseware t3 ON t2.ccId = t3.id
WHERE t2.aId = aid ;
/*将结束标志绑定到游标*/
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
/*打开游标*/
OPEN cur ;
/*开始循环*/
looplabel:LOOP
-- 声明结束的时候
FETCH cur INTO temp;
IF done THEN
LEAVE looplabel;
ELSE
SET result =CONCAT(temp,',',result);
END IF;
END LOOP looplabel;
CLOSE cur;
RETURN result;
END;$$
DELIMITER