国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

Mysql分頁查詢通用存儲過程

2024-07-24 12:57:41
字體:
供稿:網(wǎng)友

前段時間沒有給出SQLServer轉(zhuǎn)到MySQL的通用存儲過程,本著共享的精神,為大家奉獻這段Mysql分頁查詢通用存儲過程,假設(shè)所用數(shù)據(jù)庫為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;
可以存儲為數(shù)據(jù)庫腳本,然后用命令導(dǎo)入:

mysql -u root -p < pageResult.sql;

調(diào)用:call prc_page_result(1, "*", "Tablename", "", "columnname", 1, "PKID", 25);

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汉川市| 边坝县| 依兰县| 张家港市| 赞皇县| 遵化市| 新津县| 汾西县| 太谷县| 新昌县| 宜兴市| 亳州市| 平邑县| 商水县| 涡阳县| 赞皇县| 淅川县| 新干县| 鄂托克前旗| 卢氏县| 抚宁县| 招远市| 收藏| 贵港市| 满洲里市| 遵义市| 桃园县| 花莲市| 芦溪县| 凤台县| 定西市| 陈巴尔虎旗| 故城县| 宣恩县| 南岸区| 铅山县| 白朗县| 监利县| 巩义市| 衡水市| 连平县|