MySQL分页存储过程

create PROCEDURE P_GetStudentList
(
_TrueName varchar(50),
_Age int,
_PageIndex int,
_PageSize int,
out _TotalCount int
)
BEGIN
       DECLARE _sql VARCHAR(200) DEFAULT 'select * from v_userlist ';-- 空格
       DECLARE _countSql VARCHAR(200) DEFAULT 'select count(ID) from v_userlist ';
       DECLARE _whereSql VARCHAR(200) DEFAULT ' where 1=1 ';
       if(_TrueName is not null and _TrueName<>'') THEN
            set _whereSql=CONCAT(_whereSql,' and TrueName like ''%',_TrueName,'%''');
       END IF;
       if(_Age>0) THEN
            set _whereSql=CONCAT(_whereSql,' and Age=',_Age);
       END if;

       -- 算总记录数
          set _countSql=CONCAT(_countSql,_whereSql,' into @totalCount');-- 将总记录数放在会话变量@totalCount
          set @_countSql=_countSql;
          PREPARE pre_count_sql from @_countSql;-- 预编译
          EXECUTE pre_count_sql;
          set _TotalCount=@totalCount;-- 保存总记录数
          DEALLOCATE PREPARE pre_count_sql;

            -- 拼接分页数据
         set _whereSql=CONCAT(_whereSql,' limit ',(_PageIndex-1)*_PageSize,',',_PageSize);
         set _sql=CONCAT(_sql,_whereSql);
         SET @_sql=_sql;
         PREPARE pre_sql from @_sql;
         EXECUTE pre_sql;
         DEALLOCATE PREPARE pre_sql;
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值