I'm creating a paging class and need to pass in two parameters to my MySQL stored procedure for the LIMIT clause.
I'm passing them in as INTs and trying something like this
SELECT *
FROM
`MyTable`
LIMIT
MyFirstParamInt, MySecondParamInt
it gives me an error when I try and save the sproc though. Is there a way to do this that I'm just missing? Or am I going to have to EVAL the whole query and EXECUTE it?
From http://dev.mysql.com/doc/refman/5.1/en/select.html:
Here's prepared statement example which might help you:
Prior to 5.5.6,
LIMIT
could not be parameterized in MySQL stored procedures. You'd need to build the query dynamically and execute it.In 5.5.6 and above, you can just pass the stored procs parameters as arguments to
LIMIT
andOFFSET
as long as they areINTEGER
.I just found a solution which may be helpful. Use declared variables in your stored procedure and set them to your parameters
eg.
Simple solution
Try prepare statement in stored procedure.
The following worked just fine in MySQL 5.5.35. It also worked in another procedure where the same
SELECT
was used within aDECLARE . . . CURSOR
statement.pagination without statements: