Подкачка данных в SQL Server 2005 только возвращает 1 (одну) строку - PullRequest
0 голосов
/ 31 марта 2009

Кто-нибудь, пожалуйста, помогите мне.

У меня есть хранимая процедура (см. Ниже) для подкачки данных в SQL Server 2005. Цель хранимой процедуры - вернуть страницу продуктов (prodid, description) для определенной категории (CatID).

Когда я выполняю хранимую процедуру:

EXEC @return_value = [dbo].[ecosys_CNET_GetCategoryProducts]  
@CatID = N'AA',  
@PageNumber = 1,  
@ProductsPerPage = 10,  
@HowManyProducts = @HowManyProducts OUTPUT 

возвращает только одну (1) строку, хотя продуктов много:

@HowManyProducts: 10034

У меня есть похожая хранимая процедура, которая отлично работает для небольших наборов данных. Достигну ли я какого-то ограничения?

set ANSI_NULLS ON  
set QUOTED_IDENTIFIER ON  
go  

CREATE PROCEDURE [dbo].[ecosys_CNET_GetCategoryProducts]  

(  
@CatID char(2),  
@PageNumber INT,  
@ProductsPerPage INT,  
@HowManyProducts INT OUTPUT  
)  

AS  

-- Declare a new @Products TABLE variable.  
DECLARE @Products TABLE  
(  
RowNumber INT,  
prodid VARCHAR(40),  
description VARCHAR(2000)  
)  

-- Populate the @Product TABLE variable with the selected Products.  
INSERT INTO @Products  

SELECT  

ROW_NUMBER() OVER (ORDER BY cds_atr.prodid),  
cds_atr.prodid,  
cds_stdnee.description  

FROM cds_stdnee  

JOIN cds_atr  
ON (cds_stdnee.prodid = cds_atr.prodid)  

WHERE cds_atr.catid = @CatID  

-- Return the Total Number of Products using an OUTPUT variable.  
SELECT @HowManyProducts = COUNT(prodid) FROM @Products  

-- Extract the Requested Page of Products.  
SELECT DISTINCT prodid, description  

FROM @Products  

WHERE RowNumber > (@PageNumber - 1) * @ProductsPerPage  
  AND RowNumber <= @PageNumber * @ProductsPerPage

1 Ответ

1 голос
/ 31 марта 2009

Если он возвращает только одну строку, скорее всего, есть только одна строка для возврата. Добавьте SELECT * FROM @Products и посмотрите, какие строки были там. В частности, посмотрите на номера строк.

...