Когда я пытаюсь получить сведения о пользователе из таблицы сведений о пользователе, используя хранимую процедуру , оператор LIMIT не работает с параметрами startIndex и endIndex. Код ниже выдает ошибку MySQL 2013, то есть Lost connection to MySQL server during query
.
Это будет происходить только в MySQL версии 8.0, и правильно работать в следующих версиях, таких как 5.7 и т. Д. И также работать, когда я удаляю из процедуры условие LIMIT .
После этого я попытался с помощью PREPARE STMT, этот запрос выдает ошибку из-за многократного использования CONCAT.
CREATE PROCEDURE return_something(IN markFilter VARCHAR(100), IN nameFilter VARCHAR(100), IN startIndex INT, IN endIndex INT)
BEGIN
CREATE TEMPORARY TABLE temp_user_details
SELECT id, name, address FROM user_details
WHERE (CASE WHEN markFilter!='' THEN FIND_IN_SET(mark,markFilter) ELSE mark IS NOT NULL END)
AND (CASE WHEN nameFilter !='' THEN name LIKE CONCAT('%',nameFilter,'%') ELSE id IS NOT NULL END)
LIMIT startIndex, endIndex;
SELECT id, name FROM temp_user_details;
DROP TEMPORARY TABLE return_something;
END
call return_something('','', 0, 100);