2017-04-21 6 views
-1

5 번 줄에 오류가 있습니다. 무엇이 오류인지 모르겠습니다. 절차의 전반적인 효과는 현재 플레이어의 정사각형 반경 내에서 나무와 건물을 만듭니다. 이 후 다른 오류가있는 경우이를 지적 할 수 있으면 감사하겠습니다. end 블록 -FLOAT (10,6)을 선언하는 MySQL 오류

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 
+0

Pls는 그 이후의 질문이 의미가 없기 때문에 질문에 대한 대답을 편집하지 않습니다. – Shadow

답변

0

declare 문은 begin 내 복합 명령문 구문에 before any other statement를 제공해야합니다. declareset을 섞어 사용하기 때문에 두 번째 declare에 대한 오류 메시지가 표시됩니다. 당신은 여분의 필요없이 변수에 기본값을 할당 할 declare 문의 default 절을 사용할 수 있습니다 대안

... 
    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; 
    ... 

또는 :

올바른 구문은 모두 상단에 선언하는 것입니다 set :

+0

코드를 업데이트했지만 32 행에 오류가 표시됩니까? –

+0

후속 질문이있는 경우 pls는 오류 메시지를 올바르게 표시하면서 별도의 질문을하여 질문합니다. – Shadow