• λ我爱Aspx >> C#.Net >> SQL Server 2000和 SQL Server 2005实现分页的方式_数据库技巧
  • SQL Server 2000和 SQL Server 2005实现分页的方式_数据库技巧

  • :aspxer  Դ:internet  :2007-4-28 23:45:10  ؼ:sql,数据库,数据
  • 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

    Ҷƪл˵?
  • һƪ用ObjectDataSource实现自定义分页的心得总结_ASP.NET技巧
    һƪ用排序串字段实现树状结构(存储过程)_ASP技巧