Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->数据库应用 ->Mysql ->Mysql分页查询通用存储过程
  相关分类: 
Access
DB2
Mysql
Oracle
PostgreSQL
SQL Server
Sybase
其他数据库
  站内搜索: 
热门文章排行
热门文章排行 Linux 安装 Mysql (04-22)
Heartbeat_2.0.3配置MySQL5.0.18集群(04-23)
Tomcat5配置MySQL JDBC数据库连接池(04-12)
Mysql日常备份和增量备份脚本(Linux)(04-23)
MySQL (C API)VC实例及代码下载 (04-23)
精采文章排行
精采文章排行 MySQL数据库中数据库移植中的乱码问(06-29)
Oracle是波音747还是MySQL丰田汽车呢(06-29)
意料外的MySQL运算符可获更多数据功(06-29)
轻松八句话 教会你完全搞定MySQL数据(06-29)
完全讲解PHP+MySQL的分页显示示例分(06-29)
  ·实战经验:PHP+MySQL数据库论坛简易通 ·新手入门:如何在MySQL数据库中定义外键 ·MySQL数据库中SELECT语句快速精细掌握 ·MySQL系统服务安装与卸载精彩问题汇总 ·完全优化MySQL数据库性能的八大巧方法 ·MySQL服务器内部安全数据目录如何访问 ·讲解MySQL服务器安装之后如何调节性能 ·如何利用Debugview方式来调试MySQL UDF ·MySQL ODBC进行MySQL和SQL Server转换

Mysql分页查询通用存储过程

作者:Webmaster   来源:Linuxdby.com   点击:   日期:2007-06-03 [收藏] [投稿]

  IE是否经常中毒?推荐您

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

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



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:mysql中的mysql_real_connect连接参数设置   下一篇:mysql5 master slave安装配置日志
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·帮助你如何迅速优化你MySQL数据库性能

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。