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

输出结果:

 

 

posted @ 2012-12-12 17:45  net515  阅读(201)  评论(0编辑  收藏  举报