¿Cómo obtener el resultado escalar de la declaración preparada?

¿Es posible establecer el resultado de una declaración preparada en una variable? Estoy tratando de crear el siguiente procedimiento almacenado pero falla:

ERROR 1064 (42000) en la línea 31: tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca de 'stmt UTILIZANDO @m, @c, @a;

DROP PROCEDURE IF EXISTS deleteAction;

DELIMITER $
CREATE PROCEDURE deleteAction(
    IN modul CHAR(64),
    IN controller CHAR(64),
    IN actn CHAR(64))

MODIFIES SQL DATA

BEGIN

    PREPARE stmt FROM 'SELECT id 
                         FROM actions 
                        WHERE `module` = ? 
                          AND `controller` = ? 
                          AND `action` = ?';

    SET @m = modul;
    SET @c = controller;
    SET @a = actn;

    SET @i = EXECUTE stmt USING @m, @c, @a;

    DEALLOCATE PREPARE stmt;

    DELETE FROM acl WHERE action_id = @i;
    DELETE FROM actions WHERE id = @i; 

END 
$
DELIMITER ;

Respuestas a la pregunta(3)

Su respuesta a la pregunta