Я создаю класс подкачки страниц и потребность передать в двух параметрах моей хранимой процедуре MySQL для ПРЕДЕЛЬНОГО пункта.
Я передаю их в как INTs и пробую что-то вроде этого
SELECT *
FROM
`MyTable`
LIMIT
MyFirstParamInt, MySecondParamInt
это дает мне ошибку, когда я пытаюсь сохранить sproc все же. Существует ли способ сделать это, что я просто отсутствую? Или я оказываюсь перед необходимостью ОЦЕНКА целый запрос и ВЫПОЛНЯЮ его?
До 5.5.6 LIMIT
не мог быть параметризован в хранимых процедурах MySQL. Вам нужно будет динамически построить запрос и выполнить его.
В версиях 5.5.6 и выше вы можете просто передать сохраненные параметры procs в качестве аргументов в LIMIT
и OFFSET
, если они являются INTEGER
.
Из http://dev.mysql.com/doc/refman/5.1/en/select.html :
Предложение LIMIT может использоваться для ограничения количество строк, возвращаемых оператором SELECT. LIMIT принимает один или два числовых аргумента , которые оба должны быть неотрицательными целочисленными константами (кроме случаев использования подготовленных операторов).
Вот пример подготовленного оператора, который может вам помочь:
SET @skip=1;
SET @rows=5;
PREPARE STMT FROM 'SELECT * FROM table LIMIT ?, ?';
EXECUTE STMT USING @skip, @rows;