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 ;