zoukankan      html  css  js  c++  java
  • 分页存储过程

    CREATE PROCEDURE [dbo].[DK_Get_Page_List]
    @TableName NVARCHAR(MAX), --要显示的表或多个表的连接
    @FieldName NVARCHAR(500), --要显示的字段列表
    @FieldSort NVARCHAR(200), --排序字段列表或条件,必须输入
    @Condition NVARCHAR(1000), --查询条件,不需WHERE,必须输入
    @PageSize INT = 20, --每页显示的记录数
    @Page INT = 1 , --要显示那一页的记录
    @RtnCurpage INT = 1 OUTPUT, --返回显示那一页的记录
    @RtnPageCount INT = 1 OUTPUT, --查询结果分页后的总页数
    @RtnCount INT = 1 OUTPUT, --查询到的记录数
    @RtnMsg NVARCHAR(100) OUTPUT --返回信息
    AS
    BEGIN
    SET NOCOUNT ON;
    SET @RtnMsg = ''

    BEGIN TRY
    DECLARE @Sql NVARCHAR(MAX)
    --取得总记录数
    SET @Sql = N'SELECT @Cnt = COUNT(1) FROM ' + @TableName + N' WHERE ' + @Condition
    /*
    * 输出PING SQL
    * SELECT @Sql
    */
    EXEC sp_executesql @Sql, N'@Cnt INT OUTPUT', @RtnCount OUTPUT

    IF @RtnCount = 0
    BEGIN
    SET @RtnPageCount = 0
    SET @RtnCurpage = 0
    SET NOCOUNT OFF
    RETURN
    END

    --取得分页总数
    SET @RtnPageCount = (@RtnCount + @PageSize - 1)/@PageSize

    --取得当前页值
    SET @RtnCurpage = @Page
    IF @Page > @RtnPageCount
    BEGIN
    SET @RtnCurpage = @RtnPageCount
    END
    IF @Page < 1
    BEGIN
    SET @RtnCurpage = 1
    END

    --取得分页记录结果
    SET @Sql = N' SELECT * FROM ( SELECT ' + @FieldName + N', ROW_NUMBER() OVER(ORDER BY ' + @FieldSort
    + N') AS _ROW FROM ' + @TableName + N' WHERE ' + @Condition
    + N') _Table WHERE _Table._ROW BETWEEN ' + CAST(@PageSize * (@RtnCurpage - 1) + 1 AS NVARCHAR(12))
    + N' AND ' + CAST(@RtnCurpage * @PageSize AS NVARCHAR(12))
    /*
    * 输出PING SQL
    * SELECT @Sql
    */
    EXEC (@Sql)
    END TRY
    BEGIN CATCH
    SET @RtnMsg = '系统错误'
    END CATCH

    SET NOCOUNT OFF
    END

    GO

  • 相关阅读:
    leetcode 33. Search in Rotated Sorted Array
    leetcode 32. Longest Valid Parentheses
    leetcode 28. Implement strStr()
    leetcode 27. Remove Element
    leetcode 26. Remove Duplicates from Sorted Array
    leetcode 24. Swap Nodes in Pairs
    leetcode 22. Generate Parentheses
    树莓派的频率管理和热控制
    sql执行insert插入一条记录同时获取刚插入的id
    全程直播个人博客重构过程,采用springboot+dubbo+jpa技术栈。
  • 原文地址:https://www.cnblogs.com/lxf1117/p/4707295.html
Copyright © 2011-2022 走看看