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

  • 相关阅读:
    网络七层参考模型(OSI)
    TCP/IP体系结构
    VC调用外部程序接口
    处事八条
    HFC网络
    sql server 2005中的分区函数用法(partition by 字段) 
    Java实现的几个常用排序算法详细解读
    Java中读取字符文件类FileReader
    如何在Java中进行图片剪裁
    从零开始构建HTML 5 Web页面
  • 原文地址:https://www.cnblogs.com/lxf1117/p/4707295.html
Copyright © 2011-2022 走看看