您的位置:首页 > 数据库

SQL SERVER 2005分页存储过程

2007-10-19 19:29 316 查看
SET ANSI_NULLS ON


GO


SET QUOTED_IDENTIFIER ON


GO


-- =============================================


-- Author: Ristona


-- Create date: 2007-5-28


-- Description: 支持分页数据查询


-- =============================================


CREATE PROCEDURE [dbo].[GetRecordFromPage]


@SelectList VARCHAR(2000), --欲选择字段列表


@TableSource VARCHAR(100), --表名或视图表


@SearchCondition VARCHAR(2000), --查询条件


@OrderExpression VARCHAR(1000), --排序表达式


@PageIndex INT = 1, --页号,从0开始


@PageSize INT = 10 --页尺寸


AS


BEGIN


IF @SelectList IS NULL OR LTRIM(RTRIM(@SelectList)) = ''


BEGIN


SET @SelectList = '*'


END


PRINT @SelectList




SET @SearchCondition = ISNULL(@SearchCondition,'')


SET @SearchCondition = LTRIM(RTRIM(@SearchCondition))


IF @SearchCondition <> ''


BEGIN


IF UPPER(SUBSTRING(@SearchCondition,1,5)) <> 'WHERE'


BEGIN


SET @SearchCondition = 'WHERE ' + @SearchCondition


END


END


PRINT @SearchCondition




SET @OrderExpression = ISNULL(@OrderExpression,'')


SET @OrderExpression = LTRIM(RTRIM(@OrderExpression))


IF @OrderExpression <> ''


BEGIN


IF UPPER(SUBSTRING(@OrderExpression,1,5)) <> 'WHERE'


BEGIN


SET @OrderExpression = 'ORDER BY ' + @OrderExpression


END


END


PRINT @OrderExpression




IF @PageIndex IS NULL OR @PageIndex < 1


BEGIN


SET @PageIndex = 1


END


PRINT @PageIndex


IF @PageSize IS NULL OR @PageSize < 1


BEGIN


SET @PageSize = 10


END


PRINT @PageSize




DECLARE @SqlQuery VARCHAR(4000)




SET @SqlQuery='SELECT '+@SelectList+',RowNumber


FROM


(SELECT ' + @SelectList + ',ROW_NUMBER() OVER( '+ @OrderExpression +') AS RowNumber


FROM '+@TableSource+' '+ @SearchCondition +') AS RowNumberTableSource


WHERE RowNumber BETWEEN ' + CAST(((@PageIndex - 1)* @PageSize+1) AS VARCHAR)


+ ' AND ' +


CAST((@PageIndex * @PageSize) AS VARCHAR)


-- ORDER BY ' + @OrderExpression


PRINT @SqlQuery


SET NOCOUNT ON


EXECUTE(@SqlQuery)


SET NOCOUNT OFF




RETURN @@RowCount


END


GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: