首页 新闻 会员 周边

SQL Server 使用游标进行自定义分页显示内容和页数

0
[待解决问题]

各位博主,我自己写了一个带游标的分页储存过程,有点问题,请大佬们给我分析分析原因。

【源代码】

USE [bankDB]
GO
/****** Object: StoredProcedure [dbo].[usp_pagingDisplay_cursor] Script Date: 2018-07-29 19:36:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROC [dbo].[usp_pagingDisplay_cursor]
  @records int=5, --每页显示的记录数
  @page int=1 --页数
AS
  DECLARE @records1 int --不需要显示的记录数
  SET @records1=(@page-1)*@records
  DECLARE @tradeDate datetime
  DECLARE @cardID varchar(50)
  DECLARE pagingDisplay_cursor cursor
    for SELECT TOP (@records) tradeDate,cardID FROM TradeInfo
      WHERE tradeDate not in(select top (@records1) tradeDate from TradeInfo)
          and cardID not in(select top(@records1) cardID from tradeInfo)
  OPEN pagingDisplay_cursor
  FETCH NEXT FROM pagingDisplay_cursor into @tradeDate,@cardID
  WHILE(@@FETCH_STATUS=0)
    BEGIN
      SELECT TOP (@records) tradeDate 交易日期,tradeType 交易类型,cardID 卡号,tradeMoney 交易金额
      FROM TradeInfo
      WHERE tradeDate NOT IN(SELECT top (@records1) tradeDate FROM TradeInfo)
          and tradeDate=@tradeDate and cardID=@cardID
      FETCH NEXT FROM pagingDisplay_cursor into @tradeDate, @cardID
    END
    CLOSE pagingDisplay_cursor
    DEALLOCATE pagingDisplay_cursor

--执行
set nocount on
EXECUTE usp_pagingDisplay_cursor 4,3

--显示结果

交易日期 交易类型 卡号 交易金额
----------------------- -------------------- -------------------- ---------------------------------------
2018-03-16 07:44:22.383 存入 1010 3576 1234 1104 1000.00

交易日期 交易类型 卡号 交易金额
----------------------- -------------------- -------------------- ---------------------------------------
2018-03-16 07:44:22.383 存入 1010 3576 1235 1121 5000.00

交易日期 交易类型 卡号 交易金额
----------------------- -------------------- -------------------- ---------------------------------------
2018-03-16 07:45:47.103 存入 1010 3576 1234 5678 1000.00

交易日期 交易类型 卡号 交易金额
----------------------- -------------------- -------------------- ---------------------------------------
2018-03-16 07:45:47.107 存入 1010 3576 1212 1134 1.00

这个显示结果是对的


--执行
set nocount on
EXECUTE usp_pagingDisplay_cursor 6,5

--结果(显示结果为什么是错的)

交易日期 交易类型 卡号 交易金额
----------------------- -------------------- -------------------- ---------------------------------------
2018-03-30 16:39:08.190 存入 1010 3576 4560 6885 2000.00

交易日期 交易类型 卡号 交易金额
----------------------- -------------------- -------------------- ---------------------------------------
2018-07-07 22:51:45.653 存入 1010 3576 4560 6885 60.00

如果是这么写的话就会发生错误,请问是怎么回事呢?


交易记录表数据

select IDENTITY(INT,1,1) as ID,t.* INTO #new
from TradeInfo t
select * from #new

ID tradeDate cardID tradeType tradeMoney remark
----------- ----------------------- -------------------- -------------------- --------------------------------------- --------------------------------------------------
1 2018-03-16 07:44:22.367 1010 3576 1207 1128 存入 200.00 NULL
2 2018-03-16 07:44:22.370 1010 3576 1212 1004 存入 5000.00 NULL
3 2018-03-16 07:44:22.370 1010 3576 1212 1047 存入 1.00 NULL
4 2018-03-16 07:44:22.373 1010 3576 1212 1087 存入 1.00 NULL
5 2018-03-16 07:44:22.373 1010 3576 1212 1130 存入 1.00 NULL
6 2018-03-16 07:44:22.377 1010 3576 1212 1123 存入 1.00 NULL
7 2018-03-16 07:44:22.380 1010 3576 1212 1199 存入 500.00 NULL
8 2018-03-16 07:44:22.380 1010 3576 1221 1125 存入 1.00 NULL
9 2018-03-16 07:44:22.383 1010 3576 1234 1104 存入 1000.00 NULL
10 2018-03-16 07:44:22.383 1010 3576 1235 1121 存入 5000.00 NULL
11 2018-03-16 07:45:47.103 1010 3576 1234 5678 存入 1000.00 NULL
12 2018-03-16 07:45:47.107 1010 3576 1212 1134 存入 1.00 NULL
13 2018-03-16 07:46:18.467 1010 3576 1234 5678 支取 900.00 NULL
14 2018-03-16 07:46:18.473 1010 3576 1212 1134 存入 5000.00 NULL
15 2018-07-01 15:28:42.473 1010 3576 1234 5678 支取 300.00 NULL
16 2018-03-16 07:50:17.813 1010 3576 1207 1128 存入 500.00 NULL
17 2018-03-16 07:52:55.427 1010 3576 3362 3452 存入 1000.00 开户交易
18 2018-03-16 07:53:07.087 1010 3576 4354 4215 存入 100.00 开户交易
19 2018-03-16 09:40:01.563 1010 3576 1235 1121 支取 1000.00 NULL
20 2018-03-16 09:40:01.563 1010 3576 1234 5678 存入 1000.00 NULL
21 2018-03-16 09:40:47.487 1010 3576 1235 1121 支取 888.00 NULL
22 2018-03-16 09:40:47.487 1010 3576 3362 3452 存入 888.00 NULL
23 2018-03-16 09:44:04.037 1010 3576 1235 1121 支取 300.00 NULL
24 2018-03-16 09:44:04.037 1010 3576 1212 1199 存入 300.00 NULL
25 2018-07-01 15:29:59.323 1010 3576 1234 5678 支取 300.00 NULL
26 2018-07-01 15:30:59.493 1010 3576 1234 5678 存入 3000.00 NULL
27 2018-03-30 16:34:57.927 1010 3576 1207 1128 存入 500.00 NULL
28 2018-03-30 16:35:47.260 1010 3576 1234 5678 存入 1000.00 NULL
29 2018-03-30 16:39:08.190 1010 3576 4560 6885 存入 2000.00 开户交易
30 2018-07-01 15:38:51.650 1010 3576 1234 5678 存入 3000.00 NULL
31 2018-07-06 17:34:46.750 1010 3576 1234 5678 支取 80.00 NULL
32 2018-07-06 17:34:46.750 1010 3576 4354 4215 存入 80.00 NULL
33 2018-07-06 17:35:35.750 1010 3576 1234 5678 支取 80.00 NULL
34 2018-07-06 17:35:35.750 1010 3576 4354 4215 存入 80.00 NULL
35 2018-07-22 21:44:53.247 1010 3576 1235 1121 支取 200.00 NULL
36 2018-07-22 21:45:07.590 1010 3576 3362 3452 支取 200.00 NULL
37 2018-07-22 21:45:07.673 1010 3576 1235 1121 支取 200.00 NULL
38 2018-07-07 22:51:45.653 1010 3576 1212 1199 支取 60.00 NULL
39 2018-07-07 22:51:45.653 1010 3576 4560 6885 存入 60.00 NULL

白色帆船的主页 白色帆船 | 菜鸟二级 | 园豆:202
提问于:2018-09-25 23:19
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册