擴(kuò)展性很好的一個(gè)分頁(yè)存儲(chǔ)過(guò)程分享
更新時(shí)間:2011年11月02日 01:12:49 作者:
擴(kuò)展性很好的一個(gè)分頁(yè)存儲(chǔ)過(guò)程分享,需要的朋友可以參考下。
這是經(jīng)常用的一個(gè)分頁(yè)存儲(chǔ)過(guò)程 希望大家指點(diǎn)不足
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)
復(fù)制代碼 代碼如下:
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)
相關(guān)文章
SQL中Group分組獲取Top N方法實(shí)現(xiàn)可首選row_number
統(tǒng)計(jì)每個(gè)城市的最新10個(gè)產(chǎn)品本文采用了游標(biāo)方法/Count查詢/cross apply方法/row_number方法等等對(duì)比不難發(fā)現(xiàn)Group獲取Top N場(chǎng)景時(shí),可以首選row_number,游標(biāo)cursor其次,另外兩個(gè)就基本不考慮了2013-03-03
SQL Server無(wú)法收縮日志文件的原因分析及解決辦法
最近服務(wù)器執(zhí)行收縮日志文件大小的job老是報(bào)錯(cuò),小編抽時(shí)間把此問(wèn)題的解決方案整理了一下,特此分享到腳本之家平臺(tái),供大家學(xué)習(xí)2016-01-01
sql腳本查詢數(shù)據(jù)庫(kù)表,數(shù)據(jù),結(jié)構(gòu),約束等操作的方法
本文介紹了“sql腳本查詢數(shù)據(jù)庫(kù)表,數(shù)據(jù),結(jié)構(gòu),約束等操作的方法”,需要的朋友可以參考一下2013-03-03
MSSQL差異備份取系統(tǒng)權(quán)限的相關(guān)軟件下載
MSSQL差異備份取系統(tǒng)權(quán)限的相關(guān)軟件下載...2007-11-11
SQL Server正則表達(dá)式 替換函數(shù)應(yīng)用詳解
在sql開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)使用正則,本文將以此問(wèn)題進(jìn)行詳細(xì)介紹SQL Server正則表達(dá)式 替換函數(shù)應(yīng)用,需要了解更多的朋友可以參考下2012-11-11
SQL 多條件查詢幾種實(shí)現(xiàn)方法詳細(xì)介紹
這篇文章主要介紹了SQL 多條件查詢兩種實(shí)現(xiàn)方法詳細(xì)介紹的相關(guān)資料,一種是排列結(jié)合,另一種是動(dòng)態(tài)拼接SQL,需要的朋友可以參考下2016-12-12
使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)與創(chuàng)建表操作指南
這篇文章主要給大家介紹了關(guān)于使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)與創(chuàng)建表操作的相關(guān)資料,創(chuàng)建數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)管理的第一步,而SQL語(yǔ)句是創(chuàng)建數(shù)據(jù)庫(kù)的基本工具,需要的朋友可以參考下2023-08-08

