首页 > 其他 > 详细

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

时间:2015-08-17 11:32:40      阅读:116      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!