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;
  • 相关阅读:
    HDOJ线段树专题(A Simple Problem with Integers)
    COJ1183(计算表达式的值)
    理解匈牙利算法求二分匹配
    COJ1143(走迷宫)
    COJ1184格林布的地雷
    POJ2387(Til the Cows Come Home)
    POJ3264(Balanced Lineup)
    调用android手机微博客户端发送微博
    用位来保存信息
    为什么类的成员变量是自身类型时只可以声明
  • 原文地址:https://www.cnblogs.com/GuoLianSheng/p/13223628.html
Copyright © 2011-2022 走看看