
复制ALTERPROCEDURE [dbo].[sp_Sql_Paging] ( @SqlDataTable NVARCHAR(4000),分页 -- 表名 @PrimaryKey NVARCHAR(4000), -- 主键名称 @Fields NVARCHAR(4000), -- 要返回的字段 @pageSize INT, -- 页尺寸 @pageIndex INT, -- 页码 @recordCount INTOUTPUT, -- 记录总数 @strOrderBy NVARCHAR(4000), -- 排序 @strWhere NVARCHAR(4000) -- 查询条件 ) AS BEGIN SET NOCOUNT ON DECLARE @strSQL1 NVARCHAR(4000) -- SQL语句1 DECLARE @strSQL2 NVARCHAR(4000) -- SQL语句2 -- 创建临时表 -- 用来保存表的企商汇编号以及主键 CREATETABLE #Temp_Paging ( Temp_Paging_Id INT, RowNumber INT ) SET @strSQL1 = INSERT INTO [#Temp_Paging](Temp_Paging_Id, RowNumber) SELECT + @PrimaryKey + , ROW_NUMBER() OVER ( + @strOrderBy + ) AS RowNumber FROM + @SqlDataTable + + @strWhere EXEC SP_EXECUTESQL @strSQL1 SET @recordCount = @@ROWCOUNT -- 取得总记录数 -- 判断页索引 IF @pageIndex > @recordCount * 1.0 / @pageSize + 1.0 OR @recordCount <= @pageSize BEGIN SET @pageIndex = 1 END -- 分页查询 SET @strSQL2 = SELECT + @Fields + FROM + @SqlDataTable + WHERE + @PrimaryKey + IN (SELECT Temp_Paging_Id FROM [#Temp_Paging] WHERE RowNumber BETWEEN + Str((@pageIndex - 1) * @pageSize + 1) + AND + Str(@pageIndex * @pageSize) + ) + @strOrderBy EXEC SP_EXECUTESQL @strSQL2 DROPTABLE #Temp_Paging -- 删除临时表 END 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.香港云服务器