您的位置:首页技术文章

Mysql分页查询通用存储过程

【字号: 日期:2023-10-13 13:14:29浏览:65作者:馨心

前段时间没有给出SQLServer转到Mysql的通用存储过程,本着共享的精神,为大家奉献这段Mysql分页查询通用存储过程,假设所用数据库为guestbook:

use guestbook;delimiter $$drop procedure if exists prc_page_result $$create procedure prc_page_result (in currpage;;;int,in columns;;;;varchar(500),in tablename;;varchar(500),in sCondition;varchar(500),in order_fieldvarchar(100),in asc_field;;int,in primary_field varchar(100),in pagesize;;;int)begin declare sTemp; varchar(1000); declare sSqlvarchar(4000); declare sOrder varchar(1000); if asc_field = 1 then set sOrder = concat(' order by ', order_field, ' desc '); set sTemp; = '<(select min'; else set sOrder = concat(' order by ', order_field, ' asc '); set sTemp; = '>(select max'; end if; if currpage = 1 then if sCondition <> '' then set sSql = concat('select ', columns, ' from ', tablename, ' where '); set sSql = concat(sSql, sCondition, sOrder, ' limit ?'); else set sSql = concat('select ', columns, ' from ', tablename, sOrder, ' limit ?'); end if; else if sCondition <> '' then set sSql = concat('select ', columns, ' from ', tablename); set sSql = concat(sSql, ' where ', sCondition, ' and ', primary_field, sTemp); set sSql = concat(sSql, '(', primary_field, ')', ' from (select '); set sSql = concat(sSql, ' ', primary_field, ' from ', tablename, sOrder); set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder); set sSql = concat(sSql, ' limit ?'); else set sSql = concat('select ', columns, ' from ', tablename); set sSql = concat(sSql, ' where ', primary_field, sTemp); set sSql = concat(sSql, '(', primary_field, ')', ' from (select '); set sSql = concat(sSql, ' ', primary_field, ' from ', tablename, sOrder); set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder); set sSql = concat(sSql, ' limit ?'); end if; end if; set @iPageSize = pagesize; set @sQuery = sSql; prepare stmt from @sQuery; execute stmt using @iPageSize;end;$$delimiter;可以存储为数据库脚本,然后用命令导入:

mysql -u root -p < pageResult.sql;

调用:call prc_page_result(1, '*', 'Tablename', '', 'columnname', 1, 'PKID', 25);

http://blog.csdn.net/fcrpg2005/archive/2007/03/07/1522713.aspx

标签: MySQL 数据库