0

mysql5.5を使用するローカルクライアントからWebサーバーに移動しています。WebサーバーにはmySQL5.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 に答える