这里以子id查询最顶级父级数据为例
在mysql5.7创建自定义函数时,要注意有一个坑,要加上DELIMITER $ $ ,$ $ DELIMITER 这两个关键字,要不然就会一直报错,要注意!!!
例如:
CREATE FUNCTION select_parent_province(parent_area_code VARCHAR(20)) RETURNS VARCHAR(20)
BEGIN
DECLARE oTemp VARCHAR(20);
DECLARE oTempParent VARCHAR(20);
SET oTemp = '';
SET oTempParent = parent_area_code;
WHILE oTempParent <> '0'
DO
SELECT area_name,parent_area_code INTO oTemp,oTempParent FROM system_area WHERE area_code = oTempParent AND area_level = 3;
END WHILE;
RETURN oTemp;
END
这样子,执行之后,是会报错的,在声明变量时就会报错
而加上DELIMITER $ $关键字之后
DELIMITER $$
CREATE FUNCTION select_parent_province(parent_area_code VARCHAR(20)) RETURNS VARCHAR(20)
BEGIN
DECLARE oTemp VARCHAR(20);
DECLARE oTempParent VARCHAR(20);
SET oTemp = '';
SET oTempParent = parent_area_code;
WHILE oTempParent <> '0'
DO
SELECT area_name,parent_area_code INTO oTemp,oTempParent FROM system_area WHERE area_code = oTempParent AND area_level = 3;
END WHILE;
RETURN oTemp;
END $$
DELIMITER ;
就可以完美执行了