周五 23 五 2008
Mysql分页查询通用存储过程
Posted by Jansfer under 随笔
No Comments
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_field varchar(100),
in asc_field int,
in primary_field varchar(100),
in pagesize int
)
begin
declare sTemp varchar(1000);
declare sSql varchar(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);
Today on history:
- 2011: TCP/IP的三次握手的过程原理(0)
- 2011: nginx的Status Code 499是什么错误(0)
- 2007: 页面嵌入js实现参数传递(0)
- 2006: 工程师详述Google的搜索结果排列算法(0)
No Responses to “ Mysql分页查询通用存储过程 ”