In development, we often need to perform paging queries on the database. There are many ways to implement this function, and stored procedures are one of the more efficient and maintainable methods. This article will introduce how to use mysql stored procedures to implement paging functionality.
First, we need to create a stored procedure in mysql to implement the paging function. The following is a basic stored procedure example:
CREATE PROCEDURE `PageQuery`( IN pTableName VARCHAR(255), IN pSelectColumns VARCHAR(500), IN pWhere VARCHAR(500), IN pOrder VARCHAR(500), IN pStart INT, IN pPageSize INT, OUT totalRecord INT ) BEGIN DECLARE sql CHAR(1000); SET sql = CONCAT('SELECT ',pSelectColumns,' FROM ',pTableName,' WHERE 1=1 ',pWhere,' ',pOrder,' LIMIT ',pStart,',',pPageSize); PREPARE stmt FROM sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET sql = CONCAT('SELECT COUNT(1) FROM ',pTableName,' WHERE 1=1 ',pWhere); PREPARE stmt FROM sql; EXECUTE stmt INTO totalRecord; DEALLOCATE PREPARE stmt; END
The parameter description of the above stored procedure is as follows:
This stored procedure is mainly used to return the query results of the specified page number and size of each page and the total number of records that meet the filtering conditions.
The steps to use stored procedures to implement paging queries are as follows:
(1) Call stored procedures
CALL `PageQuery`(tableName, selectColumns, where, order, start, pageSize, totalRecord);
When calling a stored procedure, you need to pass in the corresponding parameters.
(2) Obtain paging data
After calling the stored procedure through the above steps, the query results with the specified page number and size of each page will be returned. You can use the following statement to obtain the query results:
SELECT * FROM temp_table;
(3) Get the total number of records
By calling the OUT parameter totalRecord when calling the stored procedure, you can get the total number of records that meet the filtering conditions.
Suppose we have a test table, which contains the following fields: id, name, age.
We need to perform paging query on this table, with 10 pieces of data per page, arranged in descending order by id.
Define the stored procedure:
CREATE PROCEDURE `PageQuery`( IN pTableName VARCHAR(255), IN pSelectColumns VARCHAR(500), IN pWhere VARCHAR(500), IN pOrder VARCHAR(500), IN pStart INT, IN pPageSize INT, OUT totalRecord INT ) BEGIN DECLARE sql CHAR(1000); SET sql = CONCAT('SELECT ',pSelectColumns,' FROM ',pTableName,' WHERE 1=1 ',pWhere,' ',pOrder,' LIMIT ',pStart,',',pPageSize); PREPARE stmt FROM sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET sql = CONCAT('SELECT COUNT(1) FROM ',pTableName,' WHERE 1=1 ',pWhere); PREPARE stmt FROM sql; EXECUTE stmt INTO totalRecord; DEALLOCATE PREPARE stmt; END
Call the stored procedure:
CALL `PageQuery`('test', 'id, name, age', '', 'ORDER BY id DESC', 0, 10, @totalRecord);
Query the total number of records:
SELECT @totalRecord;
Get the query results:
SELECT * FROM temp_table;
Through the above steps, you can easily implement the paging function of mysql.
Summary:
Mysql stored procedure is an efficient and reliable way to implement paging queries. By defining a stored procedure and passing in the corresponding parameters, the paging query function can be easily implemented. For some application scenarios that require a large number of paging queries, the use of stored procedures can greatly improve query efficiency.
The above is the detailed content of How to use mysql stored procedure to implement paging function. For more information, please follow other related articles on the PHP Chinese website!