具有多个联接的MySQL游标声明

具有多个联接的MySQL游标声明,mysql,stored-procedures,cursor,syntax-error,Mysql,Stored Procedures,Cursor,Syntax Error,我正试图在存储过程中声明具有多个联接的游标。查询完全在存储过程之外运行,但是存储过程在游标声明中给了我一个错误,声称存在语法错误 DROP PROCEDURE IF EXISTS getCheaters; DELIMITER $$ CREATE PROCEDURE getCheaters() BEGIN DECLARE id INT (11); DECLARE first_name VARCHAR (255); DECLARE last_name VARCHAR(255); DECLARE

我正试图在存储过程中声明具有多个联接的游标。查询完全在存储过程之外运行,但是存储过程在游标声明中给了我一个错误,声称存在语法错误

DROP PROCEDURE IF EXISTS getCheaters;
DELIMITER $$
CREATE PROCEDURE getCheaters()
BEGIN

DECLARE id INT (11);
DECLARE first_name  VARCHAR (255);
DECLARE last_name VARCHAR(255);
DECLARE file_name VARCHAR(255);

DECLARE no_more_rows BOOLEAN;
DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;

DECLARE userCursor FOR
    SELECT last_name, first_name, users.id
    FROM users JOIN documents ON (users.id = documents.user_id)
    JOIN licenses ON (licenses.user_id = users.id)
    WHERE multi_user_license_id IS NULL
    GROUP BY last_name, first_name
    HAVING count(documents.title) > 60;


DECLARE CONTINUE HANDLER FOR NOT FOUND
    SET no_more_rows = TRUE;

OPEN userCursor;
SELECT FOUND_ROWS() INTO num_rows;

read_loop: LOOP
    /*Do stuff*/
    IF no_more_rows THEN
        CLOSE userCursor;
        LEAVE read_loop;
    END IF;
    SET loop_cntr = loop_cntr + 1;
END LOOP;

END $$
DELIMITER;
我得到了错误106442000:您的SQL语法有一个错误;检查与MySQL服务器版本相对应的手册,以了解第1行“DELIMITER”附近使用的正确语法 错误1064 42000:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解使用“near”的正确语法 选择姓、名、users.id 来自用户在第13行加入文档

有人看到我的错误在哪里吗?

更改:

... 为声明用户游标 ... 作者:

... 声明的用户游标 ...