Mysql процедура для изменения предела и смещения - PullRequest
0 голосов
/ 22 октября 2010

Просто мысль в моей голове, но не было бы возможно создать функцию в MySQL, которая может изменить LIMIT в запросе

Предложение будет простой функцией вычисления, которая будет обрабатывать смещениев зависимости от pageno * perpage

Пример

SELECT * FROM items PAGE(4,20)

это будет то же самое, что и

SELECT * FROM items LIMIT 100,20

Я никогда раньше не создавал никаких процедур, поэтому приведенное ниже будет неверным..

CREATE PROCEDURE (int pagno, int limit)
BEGIN
     ofsset = roundup(pageno * limit)
END

Но в рамках этого запроса на самом деле установить предел и смещение для запроса?

1 Ответ

0 голосов
/ 23 октября 2010

вы можете сделать что-то вроде этого:

drop procedure if exists foo;

delimiter #

create procedure foo
(
in p_limit int unsigned
)
proc_main:begin

set SQL_SELECT_LIMIT = p_limit;

select * from <table>...

set SQL_SELECT_LIMIT = DEFAULT; 

end proc_main #

delimiter ;
call foo(64);
...