• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于Sql Server通用分页存储过程的解决方法
    POST TIME:2021-10-18 18:37

    sql server2000分页方式很多,效率吗  当到达10万级以上就有些吃力了,这里暂时不例出来了

    sql server2005以上就有了row_number 也是一大进步,详情如下参考

    复制代码 代码如下:

    Sql Server2005通用分页存储过程

    CREATE PROCEDURE [dbo].[Common_GetPagedList]
    (
    @TableName nvarchar(100), --表名
    @ColumnNames nvarchar(1000) = '*', --字段名集合(全部字段为*,其它逗号分隔)
    @OrderClause nvarchar(1000), --排序从句(不包含order by)
    @WhereClause nvarchar(1000) =N' 1=1 ',    --条件从句(不包含where)
    @PageSize int = 0, --每页记录数(0为所有)
    @PageIndex int = 1,     --页索引(从1开始)
    @TotalRecord int output     --返回总记录数
    )
    AS

    BEGIN
    if (@ColumnNames is null or @ColumnNames='') set @ColumnNames=' * '
    if (@WhereClause is null or @WhereClause='') set @WhereClause=' 1=1 '
    if (@OrderClause is null or @OrderClause='') set @OrderClause=' Id desc '

    --处理开始点和结束点
    Declare @StartRecord int;
    Declare @EndRecord int;
    Declare @TotalCountSql nvarchar(1200);
    Declare @SqlString nvarchar(4000);   

    --统计记录
    if(@TotalRecord is null OR @TotalRecord>=0)
    begin
    SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName +' where '+@WhereClause;
    --select @TotalCountSql
    EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回总记录数
    end

    if @PageSize>0
    begin   
    if @PageIndex1 set @PageIndex=1
    set @StartRecord = (@PageIndex-1)*@PageSize + 1   
    set @EndRecord = @StartRecord + @PageSize - 1
    set @SqlString = N'select row_number() over (order by '+ @OrderClause +') as rowId,'+@ColumnNames+' from '+ @TableName+' where '+@WhereClause;
    set @SqlString ='select * from (' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' + ltrim(str(@EndRecord));
    end
    else
    begin
    set @SqlString='select '+@ColumnNames+' from '+ @TableName+' where '+@WhereClause +' order by '+@OrderClause
    end
    --select @SqlString
    Exec(@SqlString)
    END

    您可能感兴趣的文章:
    • 五种SQL Server分页存储过程的方法及性能比较
    • SQL Server 分页查询通用存储过程(只做分页查询用)
    • sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享
    • 深入sql server 2005 万能分页存储过程的详解
    • mssql 高效的分页存储过程分享
    • SQL Server 2005通用分页存储过程及多表联接应用
    • MSSQL MySQL 数据库分页(存储过程)
    • 三种SQL分页查询的存储过程代码
    • SQL通用存储过程分页,支持多表联合
    • SQL分页查询存储过程代码分享
    上一篇:关于SQL 存储过程入门基础(基础知识)
    下一篇:关于sql server批量插入和更新的两种解决方案
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信