zoukankan      html  css  js  c++  java
  • 分页存储过程MYSQL

    /*select *from oa.student LIMIT 0,2 limit /*能是常量*/
    /*(当前的页数-1)*pagesize,pagesize*/
    create PROCEDURE SP_Pager(in PageIndex int,in pageSize int,in strWhere varchar(2000),out rowCount int )
    BEGIN
     DECLARE _strSql varchar(3000) DEFAULT('select *from oa.student ');/*注意空格不要加@符号;注意分号*/
     DECLARE _strCount varchar(3000);
     set _strCount='select count(1) from oa.student ';
     
     if(PageIndex<=0)
      THEN
       set PageIndex=1;
      end if;
     /*判断where是否为空*/
    /*判断的注意事项:if ()then end if; 如果有else 没有then 包含在if end if 里面*/
     if(strWhere<>'')
       then
    /*limit 只能是一个常量,*/
       set _strSql=CONCAT(_strSql,strWhere,' limit ',(PageIndex-1)*pageSize ,',',pageSize);/*select *from oa.student where 1=1 limit 1,1*/
        set _strCount=CONCAT(_strCount,strWhere,' into @TotalCount');
      ELSE
       set _strSql=CONCAT(_strSql,' limit ',(PageIndex-1)*pageSize ,',',pageSize);/*select *from oa.student where 1=1 limit 1,1*/
        set _strCount=CONCAT(_strCount,' into @TotalCount');
       end if;
     
    /*执行我们的字符串sql 需要预先编译,将编译内容放到一个变量中,pre_sql 执行预编译的变量, 删除编译*/
     set @_sql=_strSql;
     PREPARE pre_sql from @_sql;/*预编译存储到pre_sql*/
     EXECUTE pre_sql;
    /*消亡预编译*/
     DEALLOCATE PREPARE pre_sql;
     /*执行count*/
     set @_sqlCount=_strCount;
     PREPARE pre_Count from @_sqlCount;
     EXECUTE pre_Count;
    /*获取输出的值必须在消亡之前执行之后*/
     set rowCount=@TotalCount;
     DEALLOCATE PREPARE pre_Count;
    END
     
    set @count=0;
    /*调用时 limit不能是负数*/
    call SP_Pager(0,10,' where 1=1 ',@count);
    select @count;
  • 相关阅读:
    深入理解link和@import到底有什么区别?
    你应该知道的简单易用的CSS技巧
    META标签的设置
    前端webp图片
    PAT 1130 Infix Expression[难][dfs]
    PAT 1118 Birds in Forest [一般]
    生信-cufflinks输入输出文件分析
    PAT 1121 Damn Single[简单]
    PAT 1049 Counting Ones [难]
    NGS中的一些软件功能介绍
  • 原文地址:https://www.cnblogs.com/GuoLianSheng/p/13223628.html
Copyright © 2011-2022 走看看