【进阶之定义函数】一个查询树结构数据的集合

2019-10-19 12:22:34 浏览数 (1)

1、基本定义

代码语言:javascript复制
delimiter 自定义符号  -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略

create function 函数名(形参列表) returns 返回类型  -- 注意是retruns

  begin

    函数体    -- 函数内定义的变量如:set @x = 1; 变量x为全局变量,在函数外面也可以使用

    返回值

  end

自定义符号
delimiter ;

示例:

代码语言:javascript复制
-- 自定义函数
delimiter $$
create function myfun3(ia int, ib int) returns int
begin
    return ia   ib;
end
$$
delimiter ;

2、需求

2.1 统计文章分类的数量,分类是树形结构,所以有一个先查询分类树形的级别的集合。使用的函数包括FIND_IN_SET

3、shi'li

代码语言:javascript复制
DELIMITER $$

USE `hk`$$

DROP FUNCTION IF EXISTS `queryChildren`$$

CREATE DEFINER=`root`@`192.168.2.%` FUNCTION `queryChildren`(tId VARCHAR(4000)) RETURNS VARCHAR(4000) CHARSET utf8
BEGIN
	DECLARE sTemp VARCHAR(4000) DEFAULT '$';
	DECLARE sTempChd VARCHAR(4000) DEFAULT tId;
	
	WHILE sTempChd IS NOT NULL DO
	
	SET sTemp= CONCAT(sTemp,',',sTempChd);
	SELECT GROUP_CONCAT(id) INTO sTempChd FROM hk_filetype WHERE FIND_IN_SET(parentFileTypeId,sTempChd)>0;
	END WHILE;
	
	RETURN sTemp;
    END$$

DELIMITER ;

0 人点赞