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 
  • 相关阅读:
    windows pm2 开机启动
    微信小程序自定义组件封装及父子间组件传值
    cloc 统计代码行数工具
    小程序获取当前页面路径url
    小程序navigator点击有时候会闪一下
    Centos7安装python3与Python2共存
    Docker配置国内官方镜像
    Centos7下Docker的安装与使用
    Centos7yum源修改为国内阿里源
    Vim下一键运行python代码
  • 原文地址:https://www.cnblogs.com/xuanye/p/647405.html
Copyright © 2011-2022 走看看