码迷,mamicode.com
首页 > 其他好文 > 详细

简单表的 分页存储过程 (不支持多表连接)

时间:2015-08-17 11:34:53      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

CREATE PROCEDURE [dbo].[P_GridViewPager] (
    @recordTotal INT OUTPUT,            --输出记录总数
    @viewName VARCHAR(800),        --表名
    @fieldName VARCHAR(800) = *,        --查询字段
    @keyName VARCHAR(200) = Id,            --索引字段
    @pageSize INT = 20,                    --每页记录数
    @pageNo INT =1,                    --当前页
    @orderString VARCHAR(200),        --排序条件
    @whereString VARCHAR(800) = 1=1        --WHERE条件
)
AS
BEGIN
     DECLARE @beginRow INT
     DECLARE @endRow INT
     DECLARE @tempLimit VARCHAR(200)
     DECLARE @tempCount NVARCHAR(1000)
     DECLARE @tempMain VARCHAR(1000)
     --declare @timediff datetime 
     
     set nocount on
     --select @timediff=getdate() --记录时间

     SET @beginRow = (@pageNo - 1) * @pageSize    + 1
     SET @endRow = @pageNo * @pageSize
     SET @tempLimit = rows BETWEEN  + CAST(@beginRow AS VARCHAR) + AND +CAST(@endRow AS VARCHAR)
     
     --输出参数为总记录数
     SET @tempCount = SELECT @recordTotal = COUNT(*) FROM (SELECT +@keyName+ FROM +@viewName+ WHERE +@whereString+) AS my_temp
     EXECUTE sp_executesql @tempCount,N@recordTotal INT OUTPUT,@recordTotal OUTPUT
       
     --主查询返回结果集
     SET @tempMain = SELECT * FROM (SELECT ROW_NUMBER() OVER (order by +@orderString+) AS rows ,+@fieldName+ FROM +@viewName+ WHERE +@whereString+) AS main_temp WHERE +@tempLimit
     
     --PRINT @tempMain
     EXECUTE (@tempMain)
     --select datediff(ms,@timediff,getdate()) as 耗时 
     
     set nocount off
END

GO

 

简单表的 分页存储过程 (不支持多表连接)

标签:

原文地址:http://www.cnblogs.com/cherryzhou/p/4735996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!