可按任意字段排序的分页存储过程
2017-04-13 15:27
531 查看
可按任意字段排序的分页存储过程
create PROCEDURE dbo.GetPagingRecord ( @tablename varchar(100),--表名或视图表 @fieldlist varchar(4000)='*',--欲选择字段列表 @orderfield varchar(100),--排序字段 @keyfield varchar(100),--主键 @pageindex int,--页号,从0开始 @pagesize int=20,--页尺寸 @strwhere varchar(4000),--条件 @ordertype bit=1--排序,1,降序,0,升序 ) AS /* 名称:GetPagingRecord 作用:按任意字段进行排序分页 作者:菩提树(MARK MA) 时间:2004-12-14 声明:此代码你可以无偿使用及转载,但在转载时,请勿移称本文字声明 */ SET NOCOUNT ON declare @sqlstr varchar(6000) --处理SQL中危险字符,并且将条件处理成易嵌入的形式 set @strwhere=replace(@strwhere,'''','''''') set @strwhere=replace(@strwhere,'--','') set @strwhere=replace(@strwhere,';','') set @sqlstr='declare @CurPageNum int;' set @sqlstr=@sqlstr+'declare @nextpagenum int;' set @sqlstr=@sqlstr+'set @curpagenum='+cast(@PageIndex as varchar)+'*'+cast(@Pagesize as varchar)+';' set @sqlstr=@sqlstr+'set @nextpagenum='+cast(@PageIndex+1 as varchar)+'*'+cast(@Pagesize as varchar)+';' set @sqlstr=@sqlstr+'declare @sqlstr varchar(6000);' if @ordertype=1 begin set @sqlstr=@sqlstr+'set @sqlstr=''select '+@fieldlist+' from ( select top ''+cast(@nextpagenum as varchar)+'' * from '+@tablename+' where '+@strwhere+' order by '+@orderfield+' desc ) as a where '+@keyfield+' not in ( select top ''+cast(@curpagenum as varchar)+'' '+@keyfield+' from '+@tablename+' where '+@strwhere+' order by '+@orderfield+' desc) order by '+@orderfield+' desc'';' end else begin set @sqlstr=@sqlstr+'set @sqlstr=''select '+@fieldlist+' from ( select top ''+cast(@nextpagenum as varchar)+'' * from '+@tablename+' where '+@strwhere+' order by '+@orderfield+' asc ) as a where '+@keyfield+' not in ( select top ''+cast(@curpagenum as varchar)+'' '+@keyfield+' from '+@tablename+' where '+@strwhere+' order by '+@orderfield+' asc) order by '+@orderfield+' asc'';' end set @sqlstr=@sqlstr+'execute( @sqlstr)' --print @sqlstr execute(@sqlstr)
4000
相关文章推荐
- 可按任意字段排序的分页存储过程(转)
- 专用于SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)
- 可按任意字段排序的分页存储过程
- SQL Server可按任意字段排序的分页存储过程(不用临时表的方法)
- SQL 单表分页存储过程和单表多字段排序和任意字段分页存储过程
- 可按任意字段排序的分页存储过程(转)
- sql 可按任意字段排序的分页存储过程(转)
- 专用于SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)
- 专用于SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)
- 按任意字段排序的分页存储过程
- 专用于SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)--zt
- 可按任意字段排序的分页存储过程
- 专用于SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)
- SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)
- 可按任意字段排序的分页存储过程
- 专用于SqlServer2005的高效分页存储过程(支持多字段任意排序,不要求排序字段唯一)
- 支持任意字段排序及多表关联查询的存储过程分页
- 可以多个字段排序的分页存储过程
- 千万数量级分页存储过程(可支持多表查询,任意排序)
- 目前来看较完美的通用二分法分页存储过程,not in模式,适用于非数值ID,可多字段排序,可以distinct