zoukankan      html  css  js  c++  java
  • 查询的分页sql代码

    查询分页代码
    USE [WebE]
    GO
    /****** 对象:  StoredProcedure [dbo].[P_TablePaginationSearch]    脚本日期: 07/29/2010 20:36:21 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    CREATE procedure [dbo].[P_TablePaginationSearch]
    (
    @SelectField nvarchar(512)='*'     -- Select语句字段,调用的时候不要输入"select" 
    ,@FormTables nvarchar(512)      -- Form子句,表名,包括架构名,调用的时候不要输入"from" 
    ,@WhereField nvarchar(512)=null     -- Where语句、判断字段,调用的时候不要输入"where" 
    --
    ---------------------------------------------------
    ,@OverPartitionField nvarchar(512)=null   -- 分区字段,
    ,@OverOrderField nvarchar(512)     -- 分页字段,主要排序字段,必须
    ,@GroupField nvarchar(512)=null     -- 分组字段
    ,@HavingField nvarchar(512)=null    -- 分组判断条件
    ,@OrderField nvarchar(512)=null     -- 排序字段 
    --
    ---------------------------------------------------
    ,@PageSize int=10        -- 页长
    ,@Page int=1         -- 页
    --
    ---------------------------------------------------
    ,@NewTempTable varchar(100)='' --新建临时表
    --
    ----------------------------
    ,@ErrorProcedure nvarchar(128)=null output -- 错误存储过程名
    ,@ErrorNumber int=0 output      -- 错误编号
    ,@ErrorMessage nvarchar(512)=null output -- 错误信息
    )
    as
    begin

    --定义第一行记录
    declare @firstRow int;
    --定义最后一条记录
    declare @lastRow int;--设置第一条记录
    set @firstRow=((@Page-1)*@PageSize)+1;
    --设置最后一条记录
    set @lastRow=@firstRow+@PageSize;--定义查询SQL字段
    declare @sqlString nvarchar(512);
    --定义Select语句,内查询使用
    declare @selectString nvarchar(512);
    --定义Where字段,内查询使用
    declare @whereString nvarchar(512);
    --定义Form子句,内查询使用
    declare @formString nvarchar(512);
    --定义分组字段,内查询使用
    declare @groupString nvarchar(512);
    --定义Having子句,内查询使用
    declare @havingString nvarchar(512);
    --定义排序字段,外查询使用
    declare @OrderString nvarchar(512);

    declare @select_Table as nvarchar(200);--新建表

    if @NewTempTable='' --只是输出
        set @select_Table='select * '
    else    --新建临时表
        set @select_Table='select * into  '+ @NewTempTable+' '


    --组装Select子句-----------------------------------
    set @SelectField=isnull(@SelectField,N' * ');
    if(@SelectField='')
       
    set @SelectField=N' *' ;
    --组装select子句到row_number()
    set @selectString=N' select '+ @SelectField+ ', Row_Number() over( ';
    --组装到分区partition by 表达式
    set @OverPartitionField=isnull(@OverPartitionField,N'');
    if (@OverPartitionField<>'')
       
    set @selectString= @selectString+ ' partition by '+ @OverPartitionField;
    --组装到排序分页order by 表达式
    set @OverOrderField=isnull(@OverOrderField,N'');
    if (@OverOrderField<>'')
       
    set @selectString= @selectString+ ' order by '+ @OverOrderField+ N') as RowNumber ';
    --over---------------------------------------------

    --组装Form子句------------------------------------
    set @formString= N' from '+ @FormTables;

    --组装Where判断子句------------------------------
    set @WhereField=isnull(@WhereField,N'');
    if(@WhereField<>'')
       
    set @whereString=N' where '+ @WhereField;
    else
       
    set @whereString=N'';
    --where判断子句组装完毕-------------------------

    --组装group by分组子句--------------------------
    set @GroupField=isnull(@GroupField,N'');
    if (@GroupField<>'')
    begin
       
    set @groupString= N' group by '+ @GroupField;   --组装having分组判断条件
       set @HavingField= isnull(@HavingField,N'');
       
    if (@HavingField<> N'')
        
    set @havingString= N' having '+ @HavingField;
       
    else
        
    set @havingString=N'';
    end
    else
    begin
       
    set @groupString= N'';
       
    set @havingString=N'';
    end
    --over-------------------------------------------

    --组装order by外排序子句-----------------------
    set @OrderField=isnull(@OrderField,N'');
    if (@OrderField<>'')
       
    set @OrderString= N' order by '+ @OverOrderField+ N' , '+ @OrderField;
    else
       
    set @OrderString= N'';
    --如果@groupString不为空,则外排序不起作用
    if (@groupString<>N'')
       
    set @OrderString=N'';
    --over-------------------------------------------

    --组装分页查询语句
    set @sqlString=
    --   N'select * '+
        @select_Table +
       N
    'from '+
       N
    ' ( '+
        
    @selectString+
        
    @formString+
        
    @whereString+
        
    @groupString+
        
    @havingString+
       N
    ' ) as TB '+
       N
    'where '+
       N
    ' TB.RowNumber>='+cast(@firstRow as nvarchar(10))+
       N
    ' and TB.RowNumber<'+cast(@lastRow as nvarchar(10))+
       
    @orderString
    --over-------------------------------------------

    --执行SQL,返回影响行数;如有异常,则抛出,并赋值输出参数
    begin try
        
    print '@sqlString = '+@sqlString;
       
    exec (@sqlString);
       
    return @@rowcount;
    end try
    begin catch
       
    set @ErrorProcedure=Error_Procedure();
       
    set @ErrorNumber=error_number();
       
    set @ErrorMessage=error_message();
    end catch;end


  • 相关阅读:
    docker下用keepalived+Haproxy实现高可用负载均衡集群
    Centos 7 搭建蓝鲸V4.1.16社区版
    IDEA中Thrift插件配置
    idea打包java可执行jar包
    CentOS7 docker.repo 用阿里云Docker Yum源
    linux 配置maven环境变量
    Linux中修改docker镜像源及安装docker
    Spring-boot和Spring-Cloud遇到的问题
    IntelliJ Idea 常用快捷键列表
    Invocation of destroy method failed on bean with name ‘XXXX’
  • 原文地址:https://www.cnblogs.com/no7dw/p/1788200.html
Copyright © 2011-2022 走看看