Вы не можете делать то, что пытаетесь сделать:
_cla - это параметр varchar (50) , и вы не можете использовать его так, как если бы вы могли объединить этот параметр и сформировать оператор SQL.
Вы можете писать динамические операторы SQL только в том случае, если вы строите их конкатенирующими строками.
Пример:
DELIMITER \\
DROP PROCEDURE IF EXISTS `sp_test_dynamic_sql`\\
CREATE PROCEDURE `sp_test_dynamic_sql` (_min int, _max int)
BEGIN
SET @s = CONCAT('SELECT * FROM authors WHERE id BETWEEN ', _min, ' AND ', _max);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END\\
DELIMITER ;
Смотрите здесь