ALTER PROCEDURE [dbo].[Prc_GetPage]
(
@startIndex INT , -- 开始索引号
@endindex INT , -- 结束索引号
@tblName VARCHAR(1000) , -- 表名
@fldName VARCHAR(3000) , -- 显示字段名
@OrderfldName VARCHAR(255) , -- 排序字段名
@IsReCount BIT = 0 , -- 返回记录总数, 非 0 值则返回
@OrderType BIT = 0 , -- 设置排序类型, 非 0 值则降序
@strWhere VARCHAR(1000) = '' -- 查询条件 (注意: 不要加 where)
)
AS
DECLARE @strSQL VARCHAR(6000) -- 主语句
DECLARE @strTmp VARCHAR(100) -- 临时变量
DECLARE @strOrder VARCHAR(400) -- 排序类型
IF @OrderType != 0
BEGIN
SET @strOrder = 'Desc'
END
ELSE
BEGIN
SET @strOrder = 'Asc'
END
SET @strSQL = 'WITH orderList AS ( '
+ 'SELECT ROW_NUMBER() OVER (ORDER BY ' + @OrderfldName + ' '
+ @strOrder + ')AS Row, ' + @fldName + ' ' + 'from ' + @tblName
IF @strWhere != ''
SET @strSQL = @strSQL + ' where ' + @strWhere
SET @strSQL = @strSQL + ')' + 'SELECT * ' + 'FROM orderlist '
+ 'WHERE Row between ' + STR(@startIndex) + ' and ' + STR(@endIndex)
+ ''
PRINT @strSQL
IF @IsReCount != 0
BEGIN
SET @strSQL = ' select count(1) as Total from [' + @tblName + ']'
IF @strWhere != ''
SET @strSQL = @strSQL + ' where ' + @strWhere
END
--print(@strSQL)
EXEC (@strSQL)
ALTER PROCEDURE [dbo].[Prc_GetPagedReCordV2]
(
@startIndex INT , -- 开始索引号
@endindex INT , -- 结束索引号
@tblName VARCHAR(3000) , -- 表名
@fldName VARCHAR(255) , -- 显示字段名
@OrderfldName VARCHAR(255) , -- 排序字段名
@IsReCount BIT = 0 , -- 返回记录总数, 非 0 值则返回
@OrderType BIT = 0 , -- 设置排序类型, 非 0 值则降序
@strWhere VARCHAR(1000) = '' , -- 查询条件 (注意: 不要加 where)
@totalCount INT OUTPUT
)
AS
DECLARE @strSQL NVARCHAR(4000) -- 主语句
DECLARE @strTmp VARCHAR(100) -- 临时变量
DECLARE @strOrder VARCHAR(400) -- 排序类型
IF @OrderType != 0
BEGIN
SET @strOrder = 'Desc'
END
ELSE
BEGIN
SET @strOrder = 'Asc'
END
IF @IsReCount != 0
BEGIN
SET @strSQL = ' select @total = count(1) from ' + @tblName + ' '
IF @strWhere != ''
SET @strSQL = @strSQL + ' where ' + @strWhere
END
ELSE
BEGIN
SET @strSQL = ' select @total = count(1) from ' + @tblName + ' '
IF @strWhere != ''
SET @strSQL = @strSQL + ' where ' + @strWhere
END
PRINT ( @strSQL )
--exec (@strSQL)
EXECUTE sp_executesql @strSQL, N'@total int output', @totalCount OUTPUT ;
SELECT @totalCount
SET @strSQL = 'WITH orderList AS ( '
+ 'SELECT ROW_NUMBER() OVER (ORDER BY ' + @OrderfldName + ' '
+ @strOrder + ')AS Row, ' + @fldName + ' ' + 'from ' + @tblName
IF @strWhere != ''
SET @strSQL = @strSQL + ' where ' + @strWhere
SET @strSQL = @strSQL + ')' + 'SELECT * ' + 'FROM orderlist '
+ 'WHERE Row between ' + STR(@startIndex) + ' and ' + STR(@endIndex)
+ ''
EXEC (@strSQL)