存储过程源代码:
1 USE [AdventureWorks2008R2] 2 GO 3 4 /****** Object: StoredProcedure [dbo].[proc_pageData] Script Date: 12/12/2012 17:15:37 ******/ 5 SET ANSI_NULLS ON --ON时 比较运算符遵从 SQL-92 标准。SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。 6 GO 7 8 SET QUOTED_IDENTIFIER ON --ON时 标识符可以由双引号分隔, 9 GO 10 11 create proc [dbo].[proc_pageData] 12 @pageIndex int, --表示当前页码值 13 @pageSize int, --表示每页显示的记录数 14 @pageCount int output, --总页数,输出参数 15 @rowCount int output --总记录数,输出 16 as 17 begin 18 select @rowCount=COUNT(*) from Person.Address --得到总记录数 19 select @pageCount=ceiling(@rowCount/@pageSize) --得到总页数 20 --ceiling() 进一位取整,例ceiling(3.2) 得到 21 --开始分页 22 select *from 23 (select ROW_NUMBER() over(order by AddressID) as num,*from Person.Address) 24 as Tab_tmp 25 where 26 num>(@pageIndex-1)*@pageSize and num<=@pageIndex*@pageSize 27 end 28 29 30 --最简单的分页 31 32 ----分页 每页5条记录,显示第4页(第16-20条记录) 33 --select top 5 * from Person.Address 34 --where AddressID not in 35 --( 36 --select top 15 AddressID from Person.Address order by AddressID 37 --) 38 --order by Person.Address.AddressID 39 40 GO
调用存储过程。不知为什么调用时存储过程名老有红色波浪线,提示过程找不到,但可以执行。
1 DECLARE @PageCount INT ; --总页数 2 DECLARE @RowCount INT ; --总记录数 3 EXEC dbo.proc_pageData 2,5, @PageCount OUT ,@RowCount OUT 4 5 --SELECT @PageCount AS a,@RowCount AS b
输出结果: