当我尝试使用
存储过程
, the
极限
语句不使用startindex和endindex参数。下面的代码生成mysql错误2013,ie
Lost connection to MySQL server during query
.
这只会发生在mysql版本8.0中,并且在下面的版本(如5.7等)中正常工作。当我移除
极限
程序中的条件。
之后,我尝试使用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);