zoukankan      html  css  js  c++  java
  • SQL 分页实现

    --通用分页

    ALTER PROCEDURE [dbo].[Sys_Pagination_1]

    @tblName VARCHAR(2000) , -- 表名

    @strGetFields VARCHAR(1000) = '*' , -- 需要返回的列

    @fldName VARCHAR(255) = '' , -- 排序的字段名

    @PageSize INT = 10 , -- 页尺寸

    @PageIndex INT = 1 , -- 页码

    @OrderType BIT = 0 , -- 设置排序类型, 非 0 值则降序

    @strWhere VARCHAR(2500) = '' -- 查询条件 (注意: 不要加 where)

    AS

    BEGIN

    --处理开始点和结束点

    DECLARE @strOrder VARCHAR(400) -- 排序类型

    DECLARE @MaxCode NVARCHAR(100) --记录个数

    DECLARE @StartRecord INT;

    DECLARE @EndRecord INT;

    DECLARE @TotalCountSql NVARCHAR(4000);

    DECLARE @SqlString NVARCHAR(4000);

    SET @StartRecord = ( @PageIndex - 1 ) * @PageSize + 1

    SET @EndRecord = @StartRecord + @PageSize - 1

    IF @OrderType != 0

    BEGIN

    SET @strOrder = ' order by ' + @fldName + ' desc'

    --如果@OrderType不是0,就执行降序,这句很重要!

    END

    ELSE

    BEGIN

    SET @strOrder = ' order by ' + @fldName + ' asc'

    END

    SET @TotalCountSql = N'select @Max_ID = count(*) from ' + @tblName;--总记录数语句

    SET @SqlString = N'(select row_number() over (' + @strOrder

    + ') as rowId,' + @strGetFields + ' from ' + @tblName;--查询语句

    IF ( @strWhere ! = ''

    OR @strWhere != NULL

    )

    BEGIN

    SET @TotalCountSql = @TotalCountSql + ' where ' + @strWhere;

    SET @SqlString = @SqlString + ' where ' + @strWhere;

    END

    --第一次执行得到

    --IF(@TotalRecord is null)

    -- BEGIN

    EXEC sp_executesql @totalCountSql, N'@Max_ID varchar(100) output',

    @MaxCode OUTPUT;--返回总记录数

    PRINT @totalCountSql

    -- END

    ----执行主语句

    SET @SqlString = 'select ' + @strGetFields + ' from ' + @SqlString

    + ') as t where rowId between ' + LTRIM(STR(@StartRecord))

    + ' and ' + LTRIM(STR(@EndRecord));

    EXEC(@SqlString)

    PRINT @SqlString

    RETURN @MaxCode

    END

    有些事现在不做,一辈子都不会做了
  • 相关阅读:
    第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)K Co-prime Permutation
    2020 CCPC绵阳站赛后回忆+总结
    CF 1473D Program
    Educational Codeforces Round 100 (Rated for Div. 2) 补题情况
    Codeforces Round #690 (Div. 3) (补题情况)
    这个博客停用,新博客地址:www.baccano.fun
    炫酷路径(牛客)
    洛谷 P1123 取数游戏
    洛谷P2802 回家
    cf上分的失落->高兴->更失落
  • 原文地址:https://www.cnblogs.com/mengkai/p/6206370.html
Copyright © 2011-2022 走看看