2010-07-15 5 views
2

저는 저장 프로 시저를 사용하는 초보자 입학 허가를 받았습니다. 구문 오류가 발생했습니다.저장 프로 시저 구문 오류

"당신은 당신의 SQL 구문에 오류가있다; 3 호선에서 ''근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인"

CREATE PROCEDURE get_user_association_list (IN uid INT) 
BEGIN 
DECLARE rolelist VARCHAR(255); 
DECLARE role_id INT; 
DECLARE cur1 CURSOR FOR SELECT assoc_type_id FROM cause_users_assoc WHERE user_id = uid; 
OPEN cur1; 
REPEAT 
FETCH cur1 INTO role_id; 
SET rolelist = CONCAT(rolelist, role_id); 
SET rolelist = CONCAT(rolelist, ','); 
UNTIL done END REPEAT; 
CLOSE cur1; 
RETURN rolelist; 
END; 

도와주세요.

답변

2

절차가 정의되는 동안 ;에서 명령문 구분 기호를 변경하려면 DELIMITER 명령을 사용해야합니다. 이렇게하면 프로 시저 본문에 사용 된 ; 구분 기호가 MySQL 자체에서 해석되는 것이 아니라 서버로 전달 될 수 있습니다.

DELIMITER $$ 

CREATE PROCEDURE get_user_association_list (IN uid INT) 
BEGIN 

-- // Your stored procedure body, using semicolon delimiters 

END $$ 

DELIMITER ; 

추가 읽기 :

따라서 다음과 같은 시도 할 수 있습니다