• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    扩展性很好的一个分页存储过程分享
    这是经常用的一个分页存储过程 希望大家指点不足
    复制代码 代码如下:

    USE [a6756475746]
    GO
    /****** Object: StoredProcedure [dbo].[tbl_order_SearchWhereAndPage] Script Date: 11/01/2011 09:37:39 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[tbl_order_SearchWhereAndPage]
    @AllCount int OUTPUT,
    @PageIndex int,
    @PageSize int ,
    @minDate datetime,
    @maxDate datetime
    AS
    begin
    DECLARE @PageLower int
    set @PageLower=@PageSize * @PageIndex
    DECLARE @PageUpper int
    set @PageUpper= @PageLower + @PageSize - 1

    DECLARE @SearchSQL nvarchar(4000)
    set @SearchSQL='SELECT * ,( ROW_NUMBER() OVER (ORDER BY [ID] DESC) -1 ) AS RowNumber FROM tbl_order WHERE (1=1) '
    DECLARE @SearchSQLCount nvarchar(4000)
    set @SearchSQLCount='SELECT @count=Count(*) FROM tbl_order WHERE (1=1) '
    declare @Result [varchar](5000)
    set @Result=''

    if @minDate>convert(datetime,'1900-1-2')
    begin
    set @Result=@Result+' and oDeliveryDate >= '''+convert(varchar(20),@minDate)+''''
    end
    if @maxDate > convert(datetime,'1900-1-2')
    begin
    set @Result=@Result+' and oDeliveryDate = '''+convert(varchar(20),dateadd(dd,1,@maxDate))+''''
    end
    set @SearchSQLCount=@SearchSQLCount+@Result
    set @SearchSQL=@SearchSQL+@Result

    SET @SearchSQL = 'WITH t AS (' + @SearchSQL +' )
    SELECT * FROM t
    WHERE [RowNumber] BETWEEN '+ convert(varchar(50),@PageLower) +' AND '+ convert(varchar(50),@PageUpper) + '
    ORDER BY RowNumber '

    exec (@SearchSQL)

    exec sp_executesql @SearchSQLCount ,N'@count as int out' ,@AllCount out

    print @SearchSQL

    print @AllCount
    end
    exec (@Result)
    上一篇:自动定时备份sqlserver数据库的方法
    下一篇:sqlserver 临时表 Vs 表变量 详细介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    扩展性很好的一个分页存储过程分享 扩展性,很,好的,一个,分页,