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 ;
  • 相关阅读:
    个人理解的块状格式化上下文
    行框与浮动与清除浮动
    关于offset,scroll,position
    C++常用字符串操作和UTF-8和GBK之间的转换以及判定(转)
    MFC使用LoadBitmap方法加载位图文件失败解决方案(转)
    MFC在子线程中创建窗口(PostMessage方法)
    MFC线程间消息传递(转)
    MFC对话框常用操作文章收藏
    C++ 跨dll传递string类型参数执行出错问题
    C++ windows API函数末尾A和W的意义(转)
  • 原文地址:https://www.cnblogs.com/Athrun/p/2094252.html
Copyright © 2011-2022 走看看