我正从本地客户端转移到使用mysql 5.5的Web服务器,Web服务器有mySQL 5.0.91,我无法移动在我的localhost上运行良好的存储过程。
例如。
CREATE PROCEDURE `add_student`(IN section_id VARCHAR(20), IN student_id VARCHAR(20))
BEGIN
DECLARE EXIT HANDLER FOR 1062
INSERT INTO error_log(status_id,Student_ID, Section_ID, status_message,time_now)
VALUES('1062',student_id, section_id,' You are already enrolled for this Course, buddy! ', NOW());
DECLARE EXIT HANDLER FOR 1364
INSERT INTO error_log(status_id,Student_ID, Section_ID, status_message,time_now)
VALUES('1364',student_id, section_id,' ???? ', NOW());
SET @section_id=section_id;
SET @student_id=student_id;
PREPARE STMT FROM
"INSERT INTO course(SECTION_ID,STUDENT_ID ) VALUES(?,?)";
PREPARE STMT2 FROM
"INSERT INTO transcript(SECTION_ID,STUDENT_ID) VALUES(?,?)";
EXECUTE STMT USING @section_id,@student_id;
EXECUTE STMT2 USING @section_id,@student_id;
END
在mysql 5.5中运行良好但是现在它给了我以下错误:#1064 - 你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第6行的''附近使用正确的语法。是否还有这个或者我是否需要寻找使用我的localhost所拥有的相同版本的MYSQL的托管?
答案 0 :(得分:1)
您是如何尝试加载此程序的?如果你在.sql文件中有这个确切的文本,并且正在执行类似mysql < procedure.sql
的操作,那肯定会返回这样的错误。
你需要更改语句分隔符,所以mysql不会混淆 - 现在我打赌它认为第一个;结束声明。
程序之前:
DELIMITER \\
,最后一行应为:
END\\