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

来源:asp之家 时间:2011-11-03 17:04:16 

这是经常用的一个分页存储过程 希望大家指点不足 

代码如下:


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)

标签:分页,存储过程
0
投稿

猜你喜欢

  • js网页滚动条滚动事件实例分析

    2024-04-28 09:38:19
  • Python简单生成8位随机密码的方法

    2021-02-22 08:43:14
  • Yahoo! BrowserPlus 介绍

    2008-06-01 16:38:00
  • MySQL如何选择合适的索引

    2024-01-28 05:05:54
  • MYSQL必知必会读书笔记第四章之检索数据

    2024-01-18 03:34:40
  • Python 编码处理-str与Unicode的区别

    2021-04-15 15:38:43
  • keras:model.compile损失函数的用法

    2023-11-23 08:44:21
  • 基于Python编写微信清理工具的示例代码

    2022-03-04 09:02:54
  • JavaScript开发的七个实用小技巧(很有用)

    2024-04-22 13:22:26
  • 使用Python编写简单的画图板程序的示例教程

    2022-04-28 03:22:15
  • python中Tkinter复选框Checkbutton是否被选中判断

    2023-10-20 16:41:19
  • 一个简单的JS显示日期代码

    2009-02-10 12:34:00
  • 2007流行网站导航设计欣赏

    2008-02-18 12:20:00
  • Django 导出 Excel 代码的实例详解

    2021-04-01 05:56:41
  • SQL Server格式转换函数Cast、Convert介绍

    2024-01-22 18:42:16
  • oracle下实现恢复一个丢失的数据文件的代码

    2009-03-02 11:02:00
  • python实现图片横向和纵向拼接

    2021-12-20 20:53:30
  • sqlserver 2008手工修改表结构,表不能保存的问题与解决方法

    2024-01-23 03:07:26
  • Oracle 9i轻松取得建表和索引的DDL语句

    2010-07-16 13:09:00
  • Python控制线程和函数超时处理

    2023-12-18 05:47:48
  • asp之家 网络编程 m.aspxhome.com