MySQL getpolygon函数错误
我有一个错误的MySQL函数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
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'));
结束$$
定界符;
为了更好地理解,请做一些解释。为了更好地理解,请做一些解释。