zoukankan      html  css  js  c++  java
  • 通用的分页存储过程,很久以前写的

     1 CREATE procedure [dbo].[CommonPageSelect]
     2 (
     3  @SqlTable varchar(5000),--要查询的表或视图,也可以一句sql语句
     4  @SqlColumn varchar(4000),--查询的字段
     5  @SqlWhere varchar(800)=''--查询条件
     6  @pagenum int=20,--每页的记录数
     7  @beginline int=1--第几页,默认第一页
     8  @SqlPK varchar(100),--主键
     9  @SqlOrder Varchar(100), 
    10  @Count int=0 output
    11 )
    12 as
    13 set nocount on
    14 declare @PageLowerBound int
    15 declare @PageUpperBound int
    16 declare @sqlstr nvarchar(4000)
    17 
    18 
    19  
    20 --获取记录数
    21 IF @beginline=1 --可根据实际要求修改条件,如果是总是获取记录数
    22 BEGIN
    23     set @sqlstr=N'select @sCount=count(1) FROM '+@SqlTable     
    24     
    25     if @SqlWhere !='' 
    26     begin
    27         set @sqlstr= @sqlstr +' where 1=1 '+@SqlWhere
    28     end     
    29     print @sqlstr
    30     Exec sp_executesql @sqlstr,N'@sCount int outPut',@Count output
    31 
    32     if(CHARINDEX('Distinct ',@SqlColumn)>=0)
    33     begin
    34        set @sqlstr= 'select Distinct top '+Convert(varchar(10),@pagenum)+' '+REPLACE(@SqlColumn,'Distinct ',' ')+' from '+@SqlTable
    35     end
    36     else
    37     begin
    38     set @sqlstr= 'select top '+Convert(varchar(10),@pagenum)+' '+@SqlColumn+' from '+@SqlTable 
    39     end
    40     if @SqlWhere !='' 
    41     begin
    42         set @sqlstr= @sqlstr +' where 1=1 '+@SqlWhere
    43     end 
    44     if @SqlOrder !='' 
    45     begin
    46         set @sqlstr= @sqlstr +' '+@SqlOrder
    47     end 
    48     print @sqlstr
    49     Exec sp_executesql @sqlstr
    50     select @Count
    51     return 
    52 END
    53 else
    54 begin
    55     select @Count =0 
    56 end
    57 
    58 print @Count
    59 /**/
    60 set @PageLowerBound=(@beginline-1)*@pagenum
    61 set @PageUpperBound=@PageLowerBound+@pagenum
    62 
    63 create table #pageindex(rowcountid int identity(1,1not null,pageindexpkid int)
    64 set rowcount @PageUpperBound 
    65 set @sqlstr=N'insert into #pageindex(pageindexpkid) select '+@SqlPK+' from '+@SqlTable
    66 if @SqlWhere !='' 
    67 begin
    68     set @sqlstr= @sqlstr +' where 1=1 '+@SqlWhere
    69 end 
    70 if @SqlOrder !='' 
    71 begin
    72     set @sqlstr= @sqlstr +' '+@SqlOrder
    73 end 
    74 
    75 print @sqlstr
    76 Exec sp_executesql @sqlstr
    77 
    78 set @sqlstr='select '+@SqlColumn+',p.rowcountid FROM '+ @SqlTable +' inner join #pageindex p on '+@SqlPK+'=p.pageindexpkid and (p.rowcountid>'+Convert(varchar(15),@PageLowerBound)+') and (p.rowcountid<='+Convert(varchar(15),@PageUpperBound)+')' 
    79 print @sqlstr
    80 Exec sp_executesql @sqlstr
    81 
    82 
    83 set nocount off
    84 drop table #pageindex
    85 
    86 
    87 GO
    88 
  • 相关阅读:
    人人都是架构师:分布式系统架构落地与瓶颈突破
    Node.js区块链开发
    MDD:使用模型驱动开发方式进行快速开发(多图预警)
    MDSF:模型驱动开发(MDD)介绍 | 一群共同享有幸福生活的成长伙伴
    SLF4J with Logback in a Maven Project | Mograblog
    Spring MVC集成slf4j-logback
    SLF4J和Logback日志框架详解
    Python中国社区
    致远互联官网_致远软件_协同 _OA_OA系统_OA办公系统_协同管理软件及云服务领导供应商-致远软件官网
    新精英博客_公司博客_官方公告
  • 原文地址:https://www.cnblogs.com/xuanye/p/647405.html
Copyright © 2011-2022 走看看