分页存储过程(代码)
use BalloonShop select * from Product --20个字,1, 5 CREATE PROCEDURE GetProductsOnCatalogPromotion (@DescriptionLength INT,--描述信息长度 @PageNumber INT, -- 第几页 @ProductsPerPage INT, --每页显示几个商品 @HowManyProducts INT OUTPUT -- 一共有多少商品 ) AS -- declare a new TABLE variable DECLARE @Products TABLE --表变量 (RowNumber INT, --在products原始表上增加一个可靠的编号字段 ProductID INT, Name VARCHAR(50), Description VARCHAR(5000), Price MONEY, Image1FileName VARCHAR(50), Image2FileName VARCHAR(50), OnDepartmentPromotion BIT, OnCatalogPromotion BIT) -- populate the table variable with the complete list of products INSERT INTO @Products SELECT ROW_NUMBER() OVER (ORDER BY Product.ProductID), ProductID, Name, SUBSTRING(Description, 1, @DescriptionLength) + '...' AS Description, Price, Image1FileName, Image2FileName, OnDepartmentPromotion, OnCatalogPromotion FROM Product WHERE OnCatalogPromotion = 1 -- 给输出参数@HowManyProducts赋值 SELECT @HowManyProducts = COUNT(ProductID) FROM @Products -- extract the requested page of products -- 把请求的第几页的内容从@Products表变量中查询出来 SELECT ProductID, Name, Description, Price, Image1FileName, Image2FileName, OnDepartmentPromotion, OnCatalogPromotion FROM @Products WHERE RowNumber > (@PageNumber - 1) * @ProductsPerPage AND RowNumber <= @PageNumber * @ProductsPerPage GO use BalloonShop --理解表变量 DECLARE @Products TABLE (RowNumber INT, ProductID INT, Name VARCHAR(50), Description VARCHAR(5000), Price MONEY, Image1FileName VARCHAR(50), Image2FileName VARCHAR(50), OnDepartmentPromotion BIT, OnCatalogPromotion BIT) INSERT INTO @Products SELECT Row_number() OVER (ORDER BY ProductID) , * from Product where OnCatalogPromotion = 1 select * from @Products go use BalloonShop declare @HowManyProducts int exec GetProductsOnCatalogPromotion 15,2,6, @HowManyProducts out select @HowManyProducts --一共多少页:总商品数/每页的产品数 (小数) = 2.1 -- ceiling