zoukankan      html  css  js  c++  java
  • MSSQLSERVER数据库 分页存储过程示例

     牛兄的分页存储过程.

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    
    ALTER PROCEDURE [dbo].[proc_SplitPage]   
        @tblName   varchar(255),       -- 表名   
        @strFields varchar(1000) = '*', -- 需要返回的列,默认*   
        @strOrder varchar(255)='',      -- 排序的字段名,必填   
        @strOrderType varchar(10)='ASC', -- 排序的方式,默认ASC   
        @PageSize   int = 10,          -- 页尺寸,默认10   
        @PageIndex int = 1,           -- 页码,默认1   
        @strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)   
    AS
    Begin
    declare @strSQL varchar(5000)
        if @strWhere !=''  
            set @strWhere=' where '+@strWhere
    
        set @strSQL=
            'SELECT * FROM ('+   
            'SELECT ROW_NUMBER() OVER (ORDER BY '+@strOrder+' '+@strOrderType+') AS pos,'+@strFields+' '+   
            'FROM '+@tblName+' '+@strWhere+   
            ') AS sp WHERE pos BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND '+str(@PageIndex*@PageSize)
        exec (@strSQL); --执行SQL语句
    End

    调用示例一

    EXEC    [proc_SplitPage]  
            @tblName = N'(project p inner join projectca ca on p.caid=ca.id)',  
            @strFields = N'p.title,ca.caname',  
            @strOrder = N'p.id',  
            @strOrderType = N'desc',  
            @PageSize = 12,  
            @PageIndex = 1,  
            @strWhere = N''

    调用示例二

    EXEC    [proc_SplitPage]  
            @tblName = N'meeting',  
            @strFields = N'*',  
            @strOrder = N'id',  
            @strOrderType = N'desc',  
            @PageSize = 5,  
            @PageIndex = 4,  
            @strWhere = N''

  • 相关阅读:
    [计算机网络] 互联网协议栈(TCP/IP参考模型)各层的主要功能及相应协议
    [计算机网络-应用层] P2P应用
    [剑指Offer] 45.扑克牌顺子
    [剑指Offer] 44.翻转单词顺序列
    [STL] 如何将一个vector赋给另一个vector
    最近更新少,是因为在用框架做项目
    转收藏:Git常用命令速查表
    CentOS常用指令
    CentOS修改服务器系统时间
    Javascript定时跳转
  • 原文地址:https://www.cnblogs.com/cxeye/p/2837249.html
Copyright © 2011-2022 走看看