WEB开发网
开发学院数据库MySQL Mysql分页查询通用存储过程 阅读

Mysql分页查询通用存储过程

 2007-11-11 16:26:50 来源:WEB开发网   
核心提示:前段时间没有给出SQLServer转到MySQL(和PHP搭配之最佳组合)的通用存储过程,本着共享的精神,Mysql分页查询通用存储过程,为大家奉献这段MySQL(和PHP搭配之最佳组合)分页查询通用存储过程,假设所用数据库为guestbook: use guestbook;delimiter $$dr

前段时间没有给出SQLServer转到MySQL(和PHP搭配之最佳组合)的通用存储过程,本着共享的精神,为大家奉献这段MySQL(和PHP搭配之最佳组合)分页查询通用存储过程,假设所用数据库为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_field  varchar(100),
in asc_field   int,
in Prima(最完善的虚拟主机管理系统)ry_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 ', Prima(最完善的虚拟主机管理系统)ry_field, sTemp);
       set sSql = concat(sSql, '(', Prima(最完善的虚拟主机管理系统)ry_field, ')', ' from (select ');
       set sSql = concat(sSql, ' ', Prima(最完善的虚拟主机管理系统)ry_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 ', Prima(最完善的虚拟主机管理系统)ry_field, sTemp);
       set sSql = concat(sSql, '(', Prima(最完善的虚拟主机管理系统)ry_field, ')', ' from (select ');
       set sSql = concat(sSql, ' ', Prima(最完善的虚拟主机管理系统)ry_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(和PHP搭配之最佳组合) -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

Tags:Mysql 查询 通用

编辑录入:coldstar [复制链接] [打 印]
赞助商链接