zoukankan      html  css  js  c++  java
  • 扩展性很好的一个分页存储过程

    这是经常用的一个分页存储过程  希望大家指点不足
    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)
    

      

  • 相关阅读:
    uva 12169 Disgruntled Judge
    uva 11582 Colossal Fibonacci Numbers!
    ACdream 1073
    ACdream 1061 郭式树
    《构建之法》读书笔记
    南阳oj 素数求和问题
    hdoj Problem-1007 A hard puzzle
    程序员不得不知的 Navicat 实用工具
    Beyond Compare怎么对比图片差异
    教您用Beyond Compare比较十六进制文件
  • 原文地址:https://www.cnblogs.com/monian/p/2231090.html
Copyright © 2011-2022 走看看