专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sqlserver存储过程:字段排序的SQLServer分页存储过程 »正文

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条 分0页

发表评论

  • 昵称:
  • 内容: