Согласно документации , это должно быть неотрицательное целое число
Предложение LIMIT может использоваться для ограничения количества строк, возвращаемых оператором SELECT. LIMIT принимает один или два числовых аргумента, которые оба должны быть неотрицательными целочисленными константами (кроме случаев использования подготовленных операторов).
Мне кажется, что то, что вы испытываете, является недокументированной ошибкой, в этом случае mysql должен выдавать ошибку, если параметры не соответствуют требованиям документации.
Я бы предложил использовать синтаксически исправленный SQL в вашей хранимой процедуре. Вы все еще можете использовать отрицательный int как флаг, чтобы показать все, хотя. Как то так
IF myparam >= 0 THEN
SELECT * FROM `mytable` LIMIT myparam;
ELSE
SELECT * FROM `mytable`;
END IF;