sqlserver分页

Identity分页

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PRO_IDENTITYPAGEDATE')
DROP PROCEDURE PRO_IDENTITYPAGEDATE
GO
CREATE PROCEDURE PRO_IDENTITYPAGEDATE
@TABLENAME VARCHAR(36),--表名
@ORDERBYNAME VARCHAR(36),--排序列名
@PRIMARYKEY VARCHAR(36),--主键
@PAGESIZE INT,--显示的条数
@PAGENOW INT,--当前页
@PAGECOUNT INT OUT,--总页数
@ROWCOUNT INT OUT--总行数
AS
SELECT @ROWCOUNT=COUNT(*) FROM Users-- ORDER BY Id;
IF @ROWCOUNT%@PAGESIZE=0
    BEGIN
    SET @PAGECOUNT=@ROWCOUNT/@PAGESIZE
    END
ELSE
    BEGIN
     SET @PAGECOUNT=@ROWCOUNT/@PAGESIZE+1;
    END
IF @PAGENOW>=@PAGECOUNT
    BEGIN
    SET  @PAGENOW=@PAGECOUNT
    END
IF @PAGENOW<=1
    BEGIN 
    SET  @PAGENOW=1
    END
    
SELECT IDENTITY(INT,1,1) AS SCORT,CONVERT(VARCHAR(10),@PRIMARYKEY) ID
INTO #TABLE 
FROM @TABLENAME
SELECT * FROM #TABLE WHERE SCORT>(@PAGENOW-1)*@PAGESIZE AND SCORT<=(@PAGENOW)*@PAGESIZE ORDER BY @ORDERBYNAME
DROP TABLE #TABLE

ROWNUMBER分页针对sqlserver2005以上

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PRO_ROWNUMBERPAGEDATE')
DROP PROCEDURE PRO_ROWNUMBERPAGEDATE
GO
CREATE PROCEDURE PRO_ROWNUMBERPAGEDATE
@TABLENAME VARCHAR(36),--表名
@ORDERBYNAME VARCHAR(36),--排序列名
@PAGESIZE INT,--显示的条数
@PAGENOW INT,--当前页
@PAGECOUNT INT OUT,--总页数
@ROWCOUNT INT OUT--总行数
AS
SELECT @ROWCOUNT=COUNT(*) FROM Users-- ORDER BY Id;
IF @ROWCOUNT%@PAGESIZE=0
    BEGIN
    SET @PAGECOUNT=@ROWCOUNT/@PAGESIZE
    END
ELSE
    BEGIN
     SET @PAGECOUNT=@ROWCOUNT/@PAGESIZE+1;
    END
IF @PAGENOW>=@PAGECOUNT
    BEGIN
    SET  @PAGENOW=@PAGECOUNT
    END
IF @PAGENOW<=1
    BEGIN 
    SET  @PAGENOW=1
    END
SELECT  * FROM 
(
SELECT *,ROW_NUMBER() OVER(ORDER BY @ORDERBYNAME) AS ROW FROM   @TABLENAME
) T
WHERE T.ROW>(@PAGENOW-1)*@PAGESIZE AND T.ROW<=(@PAGENOW)*@PAGESIZE 

Top分页

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PRO_TOPPAGEDATE')
DROP PROCEDURE PRO_TOPPAGEDATE
GO
CREATE PROCEDURE PRO_TOPPAGEDATE
@TABLENAME VARCHAR(36),--表名
@ORDERBYNAME VARCHAR(36),--排序列名
@PRIMARYKEY VARCHAR(36),--主键
@PAGESIZE INT,--显示的条数
@PAGENOW INT,--当前页
@PAGECOUNT INT OUT,--总页数
@ROWCOUNT INT OUT--总行数
AS
SELECT @ROWCOUNT=COUNT(*) FROM @TABLENAME-- ORDER BY Id;
IF @ROWCOUNT%@PAGESIZE=0
    BEGIN
    SET @PAGECOUNT=@ROWCOUNT/@PAGESIZE
    END
ELSE
    BEGIN
     SET @PAGECOUNT=@ROWCOUNT/@PAGESIZE+1;
    END
IF @PAGENOW>=@PAGECOUNT
    BEGIN
    SET  @PAGENOW=@PAGECOUNT
    END
IF @PAGENOW<=1
    BEGIN 
    SET  @PAGENOW=1
    END

SELECT TOP(@PAGESIZE) * FROM @TABLENAME WHERE @PRIMARYKEY NOT IN
    (
    SELECT TOP((@PAGENOW-1)*@PAGESIZE)  @PRIMARYKEY FROM @TABLENAME ORDER BY @ORDERBYNAME
    ) 
ORDER BY @ORDERBYNAME

 

转载于:https://www.cnblogs.com/LoVeSW/p/3420434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值