Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL声明浮点时出错(10,6)_Mysql_Database_Procedure - Fatal编程技术网

MySQL声明浮点时出错(10,6)

MySQL声明浮点时出错(10,6),mysql,database,procedure,Mysql,Database,Procedure,我在第5行有一个错误,不确定错误是什么。该程序的整体效果将在当前玩家lat lng设定的方圆半径内创建树木和建筑。如果在此之后还有其他错误,如果您也能指出,我将不胜感激 CREATE PROCEDURE PupulateLatLng(lat FLOAT(10,6), lng FLOAT(10,6), radius INT) BEGIN DECLARE mlat FLOAT(10,6); SET mlat = 0.00084; DECLARE

我在第5行有一个错误,不确定错误是什么。该程序的整体效果将在当前玩家lat lng设定的方圆半径内创建树木和建筑。如果在此之后还有其他错误,如果您也能指出,我将不胜感激

CREATE PROCEDURE PupulateLatLng(lat FLOAT(10,6), lng FLOAT(10,6), radius INT)
    BEGIN
        DECLARE mlat FLOAT(10,6);
        SET mlat = 0.00084;
        DECLARE mlng FLOAT(10,6);
        SET mlng = 0.00118;
        DECLARE scope FLOAT(10,6);
        SET scope = Floor(radius/100);
        DECLARE baselat FLOAT(10,6);
        SET baselat = Floor(lat/mlat) * mlat;
        DECLARE baselng FLOAT(10,6);
        SET baselng = Floor(lng/mlng) * mlng;
        DECLARE dlat FLOAT(10,6);
        DECLARE dlng FLOAT(10,6);
        DECLARE dlatunits INT;
        SET dlatunits = -scope;
        loop1: LOOP
          SET dlatunits = dlatunits + 1;
              DECLARE dlngunits INT;
              SET dlngunits = -scope;
              loop2: LOOP
                  SET dlngunits = dlngunits + 1;
                  dlat = dlatunits * mlat;
                  dlng = dlngunits * mlat;
                  DECLARE rand FLOAT(10,6);
                  SET rand = rand();
                  IF (rand <= 0.3) THEN
                    GenerateTree(Floor((lat + dlat)*1000000)/1000000, Floor((lng + dlng)*1000000)/1000000);
                  ELSEIF (rand <= 0.4) THEN
                    GenerateNPCBuilding(Floor((lat + dlat)*1000000)/1000000, Floor((lng + dlng)*1000000)/1000000);            
                IF dlngunits < scope THEN
                  ITERATE loop2;
                END IF;
                LEAVE loop2;
              END LOOP loop2;
          IF dlatunits < scope THEN
            ITERATE loop1;
          END IF;
          LEAVE loop1;
        END LOOP loop1;
    END
创建程序PupulateLatLng(横向浮动(10,6)、液化天然气浮动(10,6)、半径INT)
开始
宣布mlat浮动(10,6);
设置mlat=0.00084;
宣布mlng浮动(10,6);
设置mlng=0.00118;
声明范围浮动(10,6);
设置范围=地板(半径/100);
宣布baselat浮动(10,6);
设置基线高度=地板高度(高度/高度)*高度;
宣布基准液化天然气浮子(10,6);
设置基准液化天然气=地板(液化天然气/液化天然气)*液化天然气;
宣布dlat浮动(10,6);
宣布dlng浮动(10,6);
声明dlatunits INT;
设置dlatunits=-scope;
循环1:循环
设置dlatunits=dlatunits+1;
声明dlngunits INT;
设置dlngunits=-scope;
循环2:循环
设置dlngunits=dlngunits+1;
dlat=dlat单位*mlat;
dlng=dlngunits*mlat;
宣布兰德浮动(10,6);
设置rand=rand();

如果(rand,
declare
语句必须在
begin
-
end
块中以复合语句语法出现。由于将
declare
set
混合使用,您会收到第二个
declare
的错误消息

正确的语法是将所有声明都放在顶部:

    ...
    DECLARE mlat FLOAT(10,6);
    DECLARE mlng FLOAT(10,6);
    DECLARE scope FLOAT(10,6);
    DECLARE baselat FLOAT(10,6);
    DECLARE baselng FLOAT(10,6);
    DECLARE dlat FLOAT(10,6);
    DECLARE dlng FLOAT(10,6);
    DECLARE dlatunits INT;
    SET mlat = 0.00084;
    SET mlng = 0.00118;
    SET scope = Floor(radius/100);
    SET baselat = Floor(lat/mlat) * mlat;
    SET baselng = Floor(lng/mlng) * mlng;
    SET dlatunits = -scope;
    ...
或者,您也可以使用
declare
语句的
default
子句为变量指定默认值,而无需额外的
集合

DECLARE mlat FLOAT(10,6) DEFAULT 0.00084;

我已经更新了代码,但第32行出现了错误??如果您有任何后续问题,请在他们自己的单独问题中提问,并正确指出错误消息。请不要将答案编辑到问题中,因为问题在这之后将没有任何意义。