Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > 网页制作 > Mysql分页查询通用存储过程
【标  题】:Mysql分页查询通用存储过程
【关键字】:Mysql
【来  源】:http://blog.csdn.net/fcrpg2005/archive/2007/03/07/1522713.aspx

Mysql分页查询通用存储过程

Your Ad Here

前段时间没有给出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_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);

PS:若要转载,请注明作者与出处。

使用汇编取得PE文件导入的DLL名称和函数名称:【上一篇】
常备JS操作:【下一篇】
【相关文章】
  • mysql存储过程及c#调用标准版
  • MySQL基本使用方法
  • 让MYSQL彻底支持中文
  • mysql clustering (Mysql 集群) 2-2 数据节点的配置
  • 编译安装mysql 5.0.16 字符集问题
  • Mysql 大量 unauthenticated user
  • 编译安装Apache PHP MySQL
  • Ubuntu - Edgy Eft 下安装配置Java开发环境(JDK 6 + Eclipse WTP + Tomcat + MySQL)
  • PHP5.2+APACHE2.2+mysql4.1.21+BugFree1.0的安装
  • My SpamAssassin MySQL How-To
  • 【随机文章】
  • LINUX作CVS服务器之二
  • ThinkPad T60现重大缺陷!主板居然飞线(ZT-WWW.INTOZGC.COM)
  • 迅龙的数据库反向还原算法结构
  • Oracle10g 在Redhat AS4u2 Linux32 上安装
  • FreeBSD开发人员的年龄分布
  • 大话流氓软件(四):是谁把IT精英逼成了“流氓”?[转]
  • 鼠标指针闪起来
  • shit4
  • 程序员安全
  • 第一周的任务
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.