存储过程:--获取在网站首页显示的特色商品
alter proc GetProductsOnCatalogPromotion
(
@pageIndex int,
@pageSize int,
@descriptionLength int,
@recordCount int output
)
as
select productId,productName,[description]=
case
when len([description])>@descriptionLength then substring([description],1,@descriptionLength)+'……'
else description
end
,price,image1FileName,image2FileName,author,publisherId,(select publisherName from Publisher where publisherId = p.publisherId) as publisherName
,publishDate,discount from(
select row_number() over(order by productid) as rownum,* from product where onCatalogPromotion = 1
)as p
where rownum between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize
select @recordCount = count(*) from product where onCatalogPromotion = 1
go数据访问层代码--获取在网站首页显示的特色商品
alter proc GetProductsOnCatalogPromotion
(
@pageIndex int,
@pageSize int,
@descriptionLength int,
@recordCount int output
)
as
select productId,productName,[description]=
case
when len([description])>@descriptionLength then substring([description],1,@descriptionLength)+'……'
else description
end
,price,image1FileName,image2FileName,author,publisherId,(select publisherName from Publisher where publisherId = p.publisherId) as publisherName
,publishDate,discount from(
select row_number() over(order by productid) as rownum,* from product where onCatalogPromotion = 1
)as p
where rownum between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize
select @recordCount = count(*) from product where onCatalogPromotion = 1
go问:存储过程中的output值即par[3]怎么为null,代码哪里出问题了?
alter proc GetProductsOnCatalogPromotion
(
@pageIndex int,
@pageSize int,
@descriptionLength int,
@recordCount int output
)
as
select productId,productName,[description]=
case
when len([description])>@descriptionLength then substring([description],1,@descriptionLength)+'……'
else description
end
,price,image1FileName,image2FileName,author,publisherId,(select publisherName from Publisher where publisherId = p.publisherId) as publisherName
,publishDate,discount from(
select row_number() over(order by productid) as rownum,* from product where onCatalogPromotion = 1
)as p
where rownum between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize
select @recordCount = count(*) from product where onCatalogPromotion = 1
go数据访问层代码--获取在网站首页显示的特色商品
alter proc GetProductsOnCatalogPromotion
(
@pageIndex int,
@pageSize int,
@descriptionLength int,
@recordCount int output
)
as
select productId,productName,[description]=
case
when len([description])>@descriptionLength then substring([description],1,@descriptionLength)+'……'
else description
end
,price,image1FileName,image2FileName,author,publisherId,(select publisherName from Publisher where publisherId = p.publisherId) as publisherName
,publishDate,discount from(
select row_number() over(order by productid) as rownum,* from product where onCatalogPromotion = 1
)as p
where rownum between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize
select @recordCount = count(*) from product where onCatalogPromotion = 1
go问:存储过程中的output值即par[3]怎么为null,代码哪里出问题了?
数据访问层代码//获取在网站首页显示的特色商品
public List<ProductInfo> GetProductsOnCatalogPromotion(int pageIndex, out int recordCount)
{
List<ProductInfo> list = new List<ProductInfo>();
ReaderConfig rc = new ReaderConfig();
SqlParameter[] par = new SqlParameter[]
{
new SqlParameter(PRAM_PAGEINDEX,pageIndex),
new SqlParameter(PRAM_PAGESIZE,rc.PageSize),
new SqlParameter(PRAM_DESCRIPTIONLENGTH,rc.DescriptionLength),
new SqlParameter(PRAM_RECORDCOUNT,SqlDbType.Int)
}; par[3].Direction = ParameterDirection.Output; using (SqlDataReader reader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, PROC_GETPRODUCTSONCATALOGPROMOTION, par))
{
while (reader.Read())
{
ProductInfo p = new ProductInfo();
p.productId = Convert.ToInt32(reader["productID"]);
p.productName = reader["productName"].ToString();
p.description = reader["description"].ToString();
p.price = Convert.ToDouble(reader["price"]);
p.image1FileName = reader["image1FileName"].ToString();
p.image2FileName = reader["image2FileName"].ToString();
p.author = reader["author"].ToString();
p.publisherId = Convert.ToInt32(reader["publisherId"]);
p.publisherName = reader["publisherName"].ToString();
p.publishDate = Convert.ToDateTime(reader["publishDate"].ToString());
p.discount = Convert.ToInt32(reader["discount"]);
list.Add(p);
}
int page = Convert.ToInt32(par[3].Value);
recordCount = (int)Math.Ceiling(Convert.ToDouble(page) / 10);
}
return list;
}
@count int = 0 output
exec sp_executesql @strSQL,N'@count int output',@count output