2016-07-07 59 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 ;