sql server 数据库分页查询的例子

发布时间:2020-03-17编辑:脚本学堂
本文分享一例sql代码,实现sql server数据的分页查询,同时学习下存储过程的创建与使用方法,有需要的朋友参考下。

本节主要内容:
sql server 数据库分页查询

sql代码:
 

复制代码 代码示例:
--实现数据的分页查询
CREATE PROCEDURE CatalogGetProductsOnFrontPromo
--参数1表示你 查询的字段Description返回该字段的多长的字符数;
--参数2表示每一页显示多少条记录;
--参数3表示当前的页面为第几页;
--参数4是个返回参数,返回总共的商品数量。
(@DescriptionLength INT,
@PageNumber INT,
@ProductsPerPage INT,
@HowManyProducts INT OUTPUT)
AS
-- 声明一个表变量,字段跟要查询的字段一样
DECLARE @Products TABLE
(RowNumber INT,
 ProductID INT,
 Name NVARCHAR(50),
 Description NVARCHAR(MAX),
 Price MONEY,
 Thumbnail NVARCHAR(50),
 Image NVARCHAR(50),
 PromoFront bit,
 PromoDept bit)
-- 往表变量中插入记录。
INSERT INTO @Products
--row_count系统函数,针对select语句返回的每一行从1开始编号,赋予其连续的编号。
SELECT ROW_NUMBER() OVER (ORDER BY Product.ProductID),
       ProductID, Name,
--这里实现输出description字段的形式
       CASE WHEN LEN(Description) <= @DescriptionLength THEN Description
            ELSE SUBSTRING(Description, 1, @DescriptionLength) + '...' END
       AS Description, Price, Thumbnail, Image, PromoFront, PromoDept
FROM Product
--查询符合条件的记录
WHERE PromoFront = 1
-- 返回商品数量 www.jb200.com
SELECT @HowManyProducts = COUNT(ProductID) FROM @Products
-- 为某一页查询出数据(记录)
SELECT ProductID, Name, Description, Price, Thumbnail,
       Image, PromoFront, PromoDept
FROM @Products
--计算当前页从那条记录开始到哪条记录
WHERE RowNumber > (@PageNumber - 1) * @ProductsPerPage
  AND RowNumber <= @PageNumber * @ProductsPerPage