sqlserver存储过程:字段排序的SQLServer分页存储过程来源: 发布时间:星期二, 2008年9月16日 浏览:118次 评论:0
分页过程很多,但是这个是可以支持多字段排序的.
CREATEPROCEDUREGetRecordByPage ( @sTablenvarchar(100),--表名 @sPkeynvarchar(50),--主键(一定要有) @sFieldnvarchar(1000)=’*’,--字段 @iPageCurrint,--当前页数 @iPageSizeint,--每页记录数 @sConditionnvarchar(1000),--条件(不需要where) @sOrdernvarchar(100),--排序(不需要orderby,需要asc和desc字符) @Countsint=0output,--记录条数(已有值:外部赋值,0执行count) @pageCountint=1output--查询结果分页后的总页数 ) AS SETNOCOUNTON DECLARE@sC1nvarchar(1000),@sC2nvarchar(1000) DECLARE@iAscint,@iDescint,@iTypetinyint DECLARE@sT1nvarchar(1000),@sT2nvarchar(1000),@sT3nvarchar(1000),@sT4nvarchar(1000),@sSQLnvarchar(4000) /*----------------------判断where条件是否空值-------------------*/ IFLEN(@sCondition)>2 SELECT@sC1=’WHERE’+@sCondition+’’,@sC2=’WHERE’+@sCondition+’AND’ ELSE BEGIN SELECT@sC1=’’,@sC2=’WHERE’ END SELECT@sT1=UPPER(@sOrder),@sT2=@sOrder,@iType=0,@sOrder=’’,@sT4=UPPER(@sPkey) /*-----------------------获取查询的数据行数---------------------*/ IFLEN(@sT2)>2 BEGIN SELECT@iAsc=0,@iDesc=0 IF@sT4=SUBSTRING(@sT1,0,LEN(@sT4))--存在主建 BEGIN SELECT@iAsc=CHARINDEX(’ASC’,@sT1),@iDesc=CHARINDEX(’DESC’,@sT1) END IF(@iAsc>0and@iDesc=0)OR((@iAsc>0AND@iDesc>0)AND(@iAsc<@iDesc)) SELECT@iType=1,@sT3=’>(SELECTMAX(’ ELSEIF(@iAsc=0and@iDesc>0)OR((@iAsc>0AND@iDesc>0)AND(@iAsc>@iDesc)) 0
相关文章
读者评论
发表评论 |