2012-04-15 4 views
1

MySQL 절차가 처음입니다. 나는 단순히 데이터 세트 위에 커서를 놓으 려하고 각 행마다 다른 절차를 실행하려고한다. (나는 일을 알고있다.) 나는 아래의 라인 세에 오류 코드 1064을 얻고있다 : 나는 잠시 동안 벽에 머리를 두드리는 된 매우 많은 도움을 부탁드립니다저장 프로 시저 정의의 MySQL 오류 1064

CREATE PROCEDURE `safecycle`.`sp_aggregateAllPORDaily`() 
BEGIN 
    DECLARE done INT DEFAULT FALSE; 
    DECLARE porID SMALLINT UNSIGNED; 
    DECLARE cur1 CURSOR FOR SELECT ID FROM point_of_recycle; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 

    OPEN cur1; 

    read_loop: LOOP 
    FETCH cur1 INTO porID; 
    IF done THEN 
     LEAVE read_loop; 
    END IF; 
    CALL sp_aggregatePORDaily(porID); 
    END LOOP; 

    CLOSE cur1; 
END 

.

답변

5

구분 기호를 변경하지 않았으므로 첫 번째 ;이 전체 문장을 종료합니다.

DELIMITER $$ 

CREATE PROCEDURE 
    blah blah blah 
END$$ 

DELIMITER ; 

구분이 방법을 변경하여 안전하게 내에서 정상 ;를 내장, 멀티 성명 절차를 정의하고, 그 다음이 '새로운'구분자로 문을 만들 종료 할 수 있습니다. 그런 다음 표준 구분 기호를 복원하고 평소대로 계속합니다.

+0

네, 감사합니다. – Nik

+0

매우 희한한 sqlyog로 ';'로 구분 기호를 생성합니다. 명령 행에서 실행할 때 전체 명령문을 실제로 종료시키는 시작에서. – shashi009