• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

一个分页存储过程的有关问题

mysql 搞代码 7年前 (2018-06-01) 212次浏览 已收录 0个评论

一个分页存储过程的问题
搞了好久都没有搞好,那位大哥帮个忙帮我看一下:
DELIMITER   $$

DROP   PROCEDURE   IF   EXISTS   `huangxin`.`pagination_mysql`   $$
CREATE   PROCEDURE   `huangxin`.`pagination_mysql`   (
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   =   0   then
        if   sCondition   <>   '   '   then
            set   sSql   =   concat( 'select   ',columns, '   from   ',tablename, '   where   ');
            set   sSql   =   concat(sSql,sCondition,sOrder);
        else
            set   sSql   =   concat( 'select   ',columns, '   from   ',tablename,sOrder);
        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, '(private_key) ', '   from   (select   ');
            set   sSql   =   concat(sSql,primary_field, '   as   private_key   from   ',   tablename, '   where   ',sCondition,   sOrder);
            set   sSql   =   concat(sSql, '   limit   ',(currpage-1)*pagesize, ', ',   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, '(private_key) ', '   from   (select   ');


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:一个分页存储过程的有关问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址