2016-07-07 51 views
-1

錯誤 SQL查詢: CREATE PROCEDURE GEN_MFREE()BEGIN; MySQL說:文檔 1064 - 你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第2行附近使用正確的語法。mysql創建存儲過程。我的代碼有什麼問題?

我的代碼有什麼問題? 低於是我的代碼:

CREATE PROCEDURE GEN_MFREE() 
BEGIN 
DECLARE CODE VARCHAR (10); 
DECLARE BLOCK VARCHAR (10); 
DECLARE UNIT VARCHAR (10); 
DECLARE FLOOR VARCHAR (10); 
DECLARE FIRSTNAME VARCHAR(10); 
DECLARE LASTNAME VARCHAR(10); 
DECLARE AMT DECIMAL(18,2) ; 

DECLARE done INT DEFAULT FALSE; 

    DECLARE cursor_i CURSOR FOR SELECT 
        B_resident.CODE, 
        B_resident.BLOCK, 
        B_resident.UNIT, 
        B_resident.FLOOR, 
        B_resident.FIRSTNAME, 
        B_resident.LASTNAME, 
        B_resident.TEL, 
        B_ResManFree.SIZE * B_ResManFree.FREE AS AMT, 
        '2016-01-01' AS MDATE 
       FROM B_resident LEFT OUTER JOIN B_ResManFree ON 
        B_resident.UNIT = B_ResManFree.UNIT AND 
        B_resident.BLOCK = B_ResManFree.BLOCK 
        WHERE B_resident.MAIN_CONT ='YES' 
        ORDER BY B_resident.BLOCK,B_resident.FLOOR,B_resident.UNIT 

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 
    OPEN cursor_i; 
    read_loop: LOOP 
    FETCH cursor_i INTO CODE, BLOCK, UNIT, FLOOR, FIRSTNAME, LASTNAME, AMT ; 
    IF done THEN 
     LEAVE read_loop; 
    END IF; 
    INSERT INTO B_MfreeStatment(RES_CODE, 
           RES_BLOCK, 
           RES_UNIT, 
           RES_FLOOR, 
           BAN_CODE, 
           RES_FIRSTNAME, 
           RES_LASTNAME, 
           AMT,MDATE) 
          VALUES(CODE, BLOCK, UNIT, FLOOR,'001' FIRSTNAME, LASTNAME, AMT,'2016-01-01'); 
    END LOOP; 
    CLOSE cursor_i; 
END; 
;; 
+0

問題,如_「什麼是錯我的代碼」 _熄滅課題上SO –

回答

0

你錯過了第一設置分隔符:

Delimiter // 

--> Your Code 

--> End Code with // instead of ;; 

Delimiter ;