2

私はストアドプロシージャを使用することを認められた初心者です。以下は構文エラーを生成しています。

「SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、3行目の''の近くで使用する正しい構文を確認してください。」

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;

助けてください。

4

1 に答える 1

2

プロシージャの定義中に、DELIMITERコマンドを使用してステートメント区切り文字を別の区切り文字に変更する必要があるようです。;これにより、;プロシージャ本体で使用される区切り文字を、MySQL自体で解釈するのではなく、サーバーに渡すことができます。

したがって、次のことを試してみてください。

DELIMITER $$

CREATE PROCEDURE get_user_association_list (IN uid INT)
BEGIN

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

END $$

DELIMITER ;

参考文献:

于 2010-07-15T01:37:02.200 に答える