码迷,mamicode.com
首页 > 其他好文 > 详细

通用分页存储过程

时间:2015-11-06 17:55:52      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

通用分页存储过程

声明一点:本人在做这个时候没有从查询速率的角度考虑,大神勿喷,只是从通用的角度考虑而已,本人会再接再厉做一个既通用查询速度有很好的代码的。

 

use gelunxiaowuyou
go
alter proc proc_Tablepage
(
   @table      varchar(400),  --表明
   @pageIndex  int,--当前索引页
   @pageSize   int,--每页显示的条数
   @strSql     varchar(400),--条件语句
   @pageCount  int  output ,--输出总条数
   @filedStr   varchar(400), --查询字段
   @orderId    varchar(50)   --排序字段
)
as
begin
--声明变量
  declare  @startPage  int;
  declare  @endPage    int;
  declare  @str        varchar(400);
  declare  @strCount   nvarchar(400)
--从第几页开始 set @startPage=(@pageIndex-1)*@pageSize+1;
--显示多少条 set @endPage=@pageIndex*@pageSize;
--获取索引RowId if(@strSql!=‘‘ or @strSql!=null) begin set @str=Nselect row_number() over(order by +@orderId+) ‘‘rowId‘‘, +@filedStr+ from +@table+ where + @strSql +‘‘ end
--返回查询的条数 set @strCount=Nselect count(*) from (+ @str+ ) as temp
--输出字符串 print @strCount;
--注意 这里的@sql必须是NCHAR,或Nvarchar(); exec sp_executesql @strCount,N@pageCount int output,@pageCount output;
--执行主语句 set @str=Nselect * from (+@str+) as temp where rowid between +ltrim(str(@startPage))+ and +ltrim(str(@endPage))+‘‘ print @str; exec(@str) end go

 

--测试
declare
@pageCount int exec proc_Tablepage student,ZhuanFa,HuiFang,1,3, student.Id=ZhuanFa.StudentId and ZhuanFa.Id=HuiFang.ZhuanFaId and HuiFang.IsLast=1 and ZhuanFa.JiaoXueDianId=4, @pageCount output,student.id‘‘sid‘‘,huifang.id‘‘id‘‘,StudentName,JiuDuXueXiao,GradeId,student.AddTime,CallTime,NextCallTime ,huifang.id

 

 结果:

技术分享

通用分页存储过程

标签:

原文地址:http://www.cnblogs.com/lishuhua/p/4943006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!