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