Sql server 2005 SQLServer2005中的数据分页仅返回1(一)行

Sql server 2005 SQLServer2005中的数据分页仅返回1(一)行,sql-server-2005,paging,Sql Server 2005,Paging,谁能帮帮我吗 关于SQLServer2005中的数据分页,我有一个存储过程,请参见下文。存储过程的目的是返回产品prodid页,即特定类别CatID的说明 执行存储过程时: EXEC @return_value = [dbo].[ecosys_CNET_GetCategoryProducts] @CatID = N'AA', @PageNumber = 1, @ProductsPerPage = 10, @HowManyProducts = @HowManyProducts OU

谁能帮帮我吗

关于SQLServer2005中的数据分页,我有一个存储过程,请参见下文。存储过程的目的是返回产品prodid页,即特定类别CatID的说明

执行存储过程时:

EXEC @return_value = [dbo].[ecosys_CNET_GetCategoryProducts]  
@CatID = N'AA',  
@PageNumber = 1,  
@ProductsPerPage = 10,  
@HowManyProducts = @HowManyProducts OUTPUT 
即使有许多产品,它也只返回一行:

@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

如果只返回一行,那么很可能只返回一行。添加一个SELECT*FROM@Products并查看有哪些行。特别是,请查看行号。

谢谢John。我按照您的建议做了,发现查询返回了10多种相同的产品。独特的是减少到每页1个产品。我想我需要将DISTINCT移到ROW_NUMBER子句,以确保cds_atr.prodid是不同的。您能告诉我怎么做吗?我使用了GROUP BY而不是DISTINCT:插入@Products SELECT ROW_NU NU NU NU NU NU NU ORDER cds_atr.prodid,cds_atr.prodid,cds_stdnee.description FROM cds_stdnee加入cds_atr ON cds_stdnee.prodid=cds_atr.prodid其中cds_atr.catid=@catid GROUP BY cds_atr.prodnee.description