MySQL getpolygon函数错误

MySQL getpolygon函数错误,mysql,function,geospatial,Mysql,Function,Geospatial,我有一个错误的MySQL函数 CREATE FUNCTION getpolygon(lat DOUBLE, lon DOUBLE, radius SMALLINT, corner TINYINT) RETURNS geometry DETERMINISTIC BEGIN DECLARE i INT; DECLARE a, b, c DOUBLE; DECLARE res TEXT; IF corner < 3 || radius > 500 THEN

我有一个错误的MySQL函数

CREATE FUNCTION getpolygon(lat DOUBLE, lon DOUBLE, radius SMALLINT, corner TINYINT)
  RETURNS geometry
    DETERMINISTIC
BEGIN  
DECLARE i INT; 
DECLARE a, b, c DOUBLE;  
DECLARE res TEXT;

IF corner < 3 || radius > 500 THEN  
    RETURN NULL;  
END IF;  

SET res = CONCAT(lat + radius / 111.12, ' ', lon, ',');  

WHILE i < corner  do
    SET c = RADIANS(360 / corner * i);  
    SET a = lat + COS(c) * radius / 111.12;  
    SET b = lon + SIN(c) * radius / (COS(RADIANS(lat + COS(c) * radius / 111.12 / 111.12)) * 111.12);  
    SET res = CONCAT(res, a, ' ', b, ',');  
    SET i = i + 1;  
END WHILE;  

RETURN GEOMFROMTEXT(CONCAT('POLYGON((', res, lat + radius / 111.12, ' ', lon, '))'));  
END;
创建函数getpolygon(lat-DOUBLE、lon-DOUBLE、radius-SMALLINT、corner-TINYINT)
返回几何体
确定性
开始
声明i INT;
申报a、b、c双倍;
声明res文本;
如果拐角<3 | |半径>500,则
返回NULL;
如果结束;
设置res=CONCAT(纬度+半径/111.12',经度',');
当我做的时候
设置c=弧度(360/角*i);
设置a=横向+纵向(c)*半径/111.12;
设置b=lon+SIN(c)*半径/(COS(弧度(lat+COS(c)*半径/111.12/111.12))*111.12);
设置res=CONCAT(res,a,,,b,,);
设置i=i+1;
结束时;
返回GEOMFROMTEXT(CONCAT('POLYGON('res,lat+radius/111.12','lon'));
结束;
当我运行这段代码时,MySQL服务器会说: SQL错误1064…..第5行出现nerar“”

有什么问题

谢谢你的帮助

分隔符$$
DELIMITER $$
    CREATE FUNCTION getpolygon(lat DOUBLE, lon DOUBLE, radius SMALLINT, corner TINYINT)
      RETURNS geometry
        DETERMINISTIC
    BEGIN
    DECLARE i TINYINT DEFAULT 1;  
    DECLARE a, b, c DOUBLE;  
    DECLARE res TEXT;

    IF corner < 3 || radius > 500 THEN  
        RETURN NULL;  
    END IF;  

    SET res = CONCAT(lat + radius / 111.12, '', lon, ',');  

    WHILE i < corner  do
        SET c = RADIANS(360 / corner * i);  
        SET a = lat + COS(c) * radius / 111.12;  
        SET b = lon + SIN(c) * radius / (COS(RADIANS(lat + COS(c) * radius / 111.12 / 111.12)) * 111.12);  
        SET res = CONCAT(res, a, '', b, ',');  
        SET i = i + 1;  
    END WHILE;  

    RETURN GEOMFROMTEXT(CONCAT('POLYGON((', res, lat + radius / 111.12, '', lon, '))'));  
    END$$
    DELIMITER ;
创建函数getpolygon(纬度双精度、经度双精度、半径小精度、角点小精度) 返回几何体 确定性 开始 声明i TINYINT默认值1; 申报a、b、c双倍; 声明res文本; 如果拐角<3 | |半径>500,则 返回NULL; 如果结束; 设置res=CONCAT(纬度+半径/111.12',经度','); 当我做的时候 设置c=弧度(360/角*i); 设置a=横向+纵向(c)*半径/111.12; 设置b=lon+SIN(c)*半径/(COS(弧度(lat+COS(c)*半径/111.12/111.12))*111.12); 设置res=CONCAT(res,a,,,b,,); 设置i=i+1; 结束时; 返回GEOMFROMTEXT(CONCAT('POLYGON('res,lat+radius/111.12','lon')); 结束$$ 定界符;
分隔符$$
创建函数getpolygon(纬度双精度、经度双精度、半径小精度、角点小精度)
返回几何体
确定性
开始
声明i TINYINT默认值1;
申报a、b、c双倍;
声明res文本;
如果拐角<3 | |半径>500,则
返回NULL;
如果结束;
设置res=CONCAT(纬度+半径/111.12',经度',');
当我做的时候
设置c=弧度(360/角*i);
设置a=横向+纵向(c)*半径/111.12;
设置b=lon+SIN(c)*半径/(COS(弧度(lat+COS(c)*半径/111.12/111.12))*111.12);
设置res=CONCAT(res,a,,,b,,);
设置i=i+1;
结束时;
返回GEOMFROMTEXT(CONCAT('POLYGON('res,lat+radius/111.12','lon'));
结束$$
定界符;

为了更好地理解,请做一些解释。为了更好地理解,请做一些解释。