62,263
社区成员
发帖
与我相关
我的任务
分享
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proCicPagination_new]
(
@TableName nvarchar(200)
,@OrderBy nvarchar(200) = ' id '
,@FieldList nvarchar(200) = '*'
,@FieldList_ret nvarchar(200)
,@Filter nvarchar(500)
,@StartIndex int = 1
,@PageSize int = 1
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @ExecSql nvarchar(max) -- 要执行的ql
DECLARE @where varchar(max)
DECLARE @EndIndex int
DECLARE @VFieldList_ret VARCHAR(1000)
IF @FieldList_ret = ''
set @VFieldList_ret = @FieldList
ELSE
set @VFieldList_ret = @FieldList_ret
SET @EndIndex = @startIndex+@pageSize-1
if len(@Filter) = 0
set @where = ''
else
set @where =' WHERE '+ @Filter
SET @ExecSql = 'WITH RowList AS ( '
+'SELECT ROW_NUMBER() OVER (ORDER BY '+@OrderBy+' )AS Row, '+ @FieldList
+' from '+@TableName + ' ' + @where +' ) '
+' SELECT ' + @VFieldList_ret + ' FROM RowList WHERE Row between '+convert(varchar,@startIndex)+' and '+convert(varchar,@EndIndex)
print @ExecSql
EXEC (@ExecSql) -- 返回结果集
END