SQL Server 2000和 SQL Server 2005实现分页的方式

王朝mssql·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

2000:

首先获得所有的记录集合的存储过程:

create PROCEDURE [dbo].[P_GetOrderNumber]

AS

select count(orderid) from orders;----orders为表

RETURN

分页的存储过程

create procedure [dbo].[P_GetPagedOrders2000]

(@startIndex int, ---开始页数

@pageSize int----每一页显示的数目

)

as

set nocount on

declare @indextable table(id int identity(1,1),nid int) ----定义一个表变量

declare @PageUpperBound int

set @PageUpperBound=@startIndex+@pagesize-1

set rowcount @PageUpperBound

insert into @indextable(nid) select orderid from orders order by orderid desc

select O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName

from orders O

left outer join Customers C

on O.CustomerID=C.CustomerID

left outer join Employees E

on O.EmployeeID=E.EmployeeID

inner join @indextable t on

O.orderid=t.nid

where t.id between @startIndex and @PageUpperBound order by t.id ----实现分页的关键

set nocount off

2005:

create [dbo].[P_GetPagedOrders2005]

(@startIndex INT,

@pageSize INT

)

AS

begin

WITH orderList AS (

SELECT ROW_NUMBER() OVER (ORDER BY O.orderid DESC)AS Row, O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName

from orders O

left outer join Customers C

on O.CustomerID=C.CustomerID

left outer join Employees E

on O.EmployeeID=E.EmployeeID)

SELECT orderid,orderdate,customerid,companyName,employeeName

FROM orderlist

WHERE Row between @startIndex and @startIndex+@pageSize-1

end

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航