【源代码】
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