laiv77的gravatar头像
laiv77 2017-12-29 14:51:59

mysql自定义函数哪里出问题了

code:

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    FUNCTION `temp`.`findRootEle`
    (in_ele VARCHAR(255),
    in_pele VARCHAR(255))
    RETURNS VARCHAR(255)
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN
    DECLARE l_rid VARCHAR(255);
    DECLARE l_prid VARCHAR(255);
    SET l_rid=in_ele;
    SET l_prid=in_pele;
    WHILE l_prid <> "1" DO
    SET l_rid=l_prid;
    SELECT parent_id INTO l_prid FROM region WHERE id=l_rid;
    END WHILE;
    RETURN(l_rid);

    END$$

DELIMITER ;

mysql自定义函数哪里出问题了

 

所有回答列表(1)
laiv77的gravatar头像
laiv77  LV10 2018年1月1日

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    FUNCTION `temp`.`findRootEle`(some_id VARCHAR(255),some_parent_id VARCHAR(255))
    RETURNS VARCHAR(255)
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN    
    DECLARE sid VARCHAR(255);
    DECLARE pid VARCHAR(255);
    SET sid=some_id;
    SET pid=some_parent_id;
    WHILE pid<> "1" DO
      SET sid=pid;
      SELECT parent_id FROM region WHERE rid=sid INTO pid;
    END WHILE;
    RETURN sid;
    END$$

DELIMITER ;

已解决,附上代码,貌似各位牛牛对自定义函数了解不多,这个东西确实不是很常用,效率不高等等方面原因,我是因为有点事临时写mysql的自定义函数(ps:实际上就是偷懒,想不写代码,用一个自定义函数解决,当然项目中建议不使用),看看就好了,没什么好研究的

评论(0) 最佳答案
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友