mysql创建存储过程。我的代码有什么问题?

时间:2016-07-07 09:23:29

标签: mysql

错误 SQL查询: CREATE PROCEDURE GEN_MFREE()BEGIN; MySQL说:文档 1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第2行

我的代码出了什么问题? 在下面是我的代码:

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

1 个答案:

答案 0 :(得分:0)

您首先要错过设置分隔符:

Delimiter //

--> Your Code

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

Delimiter ;