【MySQL】MySQL创建函数(FUNCTION)

MySQL创建函数(FUNCTION)

代码示例

DROP FUNCTION IF EXISTS `getChildID`;
DELIMITER ;;
CREATE DEFINER=`seul`@`%` FUNCTION `getChildID`(areaId varchar(20)) RETURNS varchar(4000) CHARSET utf8
BEGIN
            DECLARE sTemp VARCHAR(4000);
            DECLARE sTempChd VARCHAR(4000);
            SET sTemp='';
            SET sTempChd = CAST(areaId AS CHAR);
            WHILE sTempChd IS NOT NULL DO
						IF sTemp!='' THEN
            SET sTemp= CONCAT(sTemp,',',sTempChd);
						ELSE
					  SET sTemp=sTempChd;
						END IF;
            SELECT GROUP_CONCAT(id) INTO sTempChd FROM z_area WHERE FIND_IN_SET(CAST(parent_id AS SIGNED),sTempChd)>0;
            END WHILE;
            RETURN sTemp;
            END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for getParentID
-- ----------------------------
DROP FUNCTION IF EXISTS `getParentID`;
DELIMITER ;;
CREATE DEFINER=`seul`@`%` FUNCTION `getParentID`(areaId varchar(20)) RETURNS varchar(4000) CHARSET utf8
BEGIN
            DECLARE sTemp VARCHAR(4000);
            DECLARE sTempChd VARCHAR(4000);
            SET sTemp='';
 
						SELECT group_concat(T2.id) INTO sTemp
            FROM (
                  SELECT
                    @r AS _id,
                    (SELECT @r := parent_id FROM z_area WHERE id = _id) AS parent_id,
                    @l := @l + 1 AS lvl FROM (SELECT @r := areaId, @l := 0) vars,
                    z_area h WHERE @r <> 0 AND parent_id > 0
                 ) T1 JOIN z_area T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;
						
            RETURN sTemp;
            END
;;
DELIMITER ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值