zoukankan      html  css  js  c++  java
  • 分頁的Mysql存儲過程

    DELIMITER $$

    DROP PROCEDURE
    IF EXISTS `UP_Page` $$
    CREATE DEFINER
    =`root`@`localhost` PROCEDURE `UP_Page`(
    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 ;
  • 相关阅读:
    队列的链式存储结构实现
    堆栈的链式存储实现
    使用C#改变windows系统本地时间
    oracle 多数值录入校验(分隔符“/”)
    oracle中in和exists的区别
    redis安装 windows版(图形化安装)
    Oracle 返回结果集
    饿了么4年 + 阿里2年:研发路上的一些总结与思考
    Oracle 获取各类时间
    Oracle表中已有数据,修改字段长度
  • 原文地址:https://www.cnblogs.com/Athrun/p/2094252.html
Copyright © 2011-2022 走看看