程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql分頁查詢通用存儲過程_MySQL教程

Mysql分頁查詢通用存儲過程_MySQL教程

編輯:關於MYSQL數據庫

前段時間沒有給出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);


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved