0

我正在从使用 mysql 5.5 的本地客户端移动到网络服务器,网络服务器具有 mySQL 5.0.91,我无法移动在我的本地主机上运行良好的存储过程。

例如。

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 行的 '' 附近使用正确的语法。无论如何,我是否需要寻找使用与我的本地主机相同版本的 MYSQL 的主机?

4

1 回答 1

1

您如何尝试加载此程序?如果您在 .sql 文件中有这个确切的文本并且正在执行类似的操作mysql < procedure.sql ,它肯定会返回这样的错误。

您需要更改语句分隔符,因此 mysql 不会感到困惑——现在我打赌它认为第一个 ; 结束声明。

在程序执行之前: DELIMITER \\

最后一行应该是:

END\\

于 2012-09-04T02:36:36.653 回答