SQL 存储过程 数据分页源代码

存储过程源代码:

 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

输出结果:

SQL 存储过程 数据分页源代码

 

 

你可能感兴趣的:(存储过程)