• 分页存储过程


    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

  • 相关阅读:
    execCommand快速实现复制到剪贴板
    webpack安装&指定版本安装&遇到的问题
    promise初体验
    使用原生JS发送AJAX请求(XML,JSON解析)
    【Python3】python中pymysql数据编码的问题
    闭包,闭包用途,call、apply、bind 的用法
    实现一个jQuery API
    Android 客户端和 web服务器通信
    Adb 基础
    在Android 中实现scp操作
  • 原文地址:https://www.cnblogs.com/lxf1117/p/4707295.html
Copyright © 2020-2023  润新知