现在的位置: 首页 > 综合 > 正文

Extracting Multiple Resultsets from a DataReader

2013年10月06日 ⁄ 综合 ⁄ 共 1120字 ⁄ 字号 评论关闭
// read the first resultset
reader = command.ExecuteReader();

// read the data from that resultset
while (reader.Read()) {
    suppliers.Add(PopulateSupplierFromIDataReader( reader ));
}

// read the next resultset
reader.NextResult();

// read the data from that second resultset
while (reader.Read()) {
    products.Add(PopulateProductFromIDataReader( reader ));
}

Figure 2 Paging Through the Orders Table
CREATE PROCEDURE northwind_OrdersPaged
(
    @PageIndex int, 
    @PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @RowsToReturn int

-- First set the rowcount
SET @RowsToReturn = @PageSize * (@PageIndex + 1)
SET ROWCOUNT @RowsToReturn

-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1

-- Create a temp table to store the select results
CREATE TABLE #PageIndex 
(
    IndexId int IDENTITY (1, 1) NOT NULL,
    OrderID int
)

-- Insert into the temp table
INSERT INTO #PageIndex (OrderID)
SELECT 
    OrderID
FROM 
    Orders
ORDER BY 
    OrderID DESC

-- Return total count
SELECT COUNT(OrderID) FROM Orders

-- Return paged results
SELECT 
    O.*
FROM 
    Orders O,
    #PageIndex PageIndex
WHERE 
    O.OrderID = PageIndex.OrderID AND
    PageIndex.IndexID > @PageLowerBound AND
    PageIndex.IndexID < @PageUpperBound
ORDER BY 
    PageIndex.IndexID

END
 

抱歉!评论已关闭.