SqlServer 2000、2005分页存储过程整理第1/3页

{"3":"@RecordCount int output,@ReturnCount bit,@QueryStr nvarchar(1000)='table1',--\u8868\u540d\u3001\u89c6\u56fe\u540d\u3001\u67e5\u8be2\u8bed\u53e5@PageSize int=20, --\u6bcf\u9875\u7684\u5927\u5c0f(\u884c\u6570)@PageCurrent int=2, --\u8981\u663e\u793a\u7684\u9875 \u4ece0\u5f00\u59cb@FdShow nvarchar (2000)='*', --\u8981\u663e\u793a\u7684\u5b57\u6bb5\u5217\u8868@IdentityStr nvarchar (100)='id', --\u4e3b\u952e@WhereStr nvarchar (2000)='1=1',@FdOrder nvarchar(100)='desc' --\u6392\u5e8f \u53ea\u80fd\u53d6desc\u6216\u8005ascasset nocount ondeclare@sql nvarchar(2000)if @WhereStr = '' begin set @WhereStr = '1=1'endif @ReturnCount=1 begin declare @tsql nvarchar(200) set @tsql=N'select @RecordCount = count(*) from ' + @QueryStr + ' where ' + @WhereStr exec sp_executesql @tsql,N'@RecordCount int output',@RecordCount outputendif @PageCurrent = 0 begin set @sql = 'select top ' + cast(@PageSize as nvarchar(3)) + ' ' + @FdShow + ' from ' + @QueryStr + ' where ' + @WhereStr + ' order by ' + @IdentityStr + ' ' + @FdOrderendelse begin if upper(@FdOrder) = 'DESC' begin set @sql = 'select top ' + cast(@PageSize as nvarchar(3)) + ' ' + @FdShow + ' from ' + @QueryStr + ' where ' + @WhereStr + ' and ' + @IdentityStr + '< ( select min(' + @IdentityStr + ') from (select top ' + cast(@PageSize*@PageCurrent as nvarchar(10)) + ' ' + @IdentityStr + ' from ' + @QueryStr + ' where ' + @WhereStr + ' order by ' + @IdentityStr + ' desc) as t) order by ' + @IdentityStr + ' desc' end else begin set @sql = 'select top ' + cast(@PageSize as nvarchar(3)) + ' ' + @FdShow + ' from ' + @QueryStr + ' where ' + @WhereStr + ' and ' + @IdentityStr + '> ( select max(' + @IdentityStr + ') from (select top ' + cast(@PageSize*@PageCurrent as nvarchar(10)) + ' ' + @IdentityStr + ' from ' + @QueryStr + ' where ' + @WhereStr + ' order by ' + @IdentityStr + ' asc) as t) order by ' + @IdentityStr + ' asc' endend--print @sqlexecute(@sql)","2":"\u811a\u672c\u65e5\u671f: 05\/21\/2008 11:37:12 ******\/\r\nSET ANSI_NULLS ON\r\nGO\r\nSET QUOTED_IDENTIFIER ON\r\nGO\r\n\r\nCREATE proc [dbo].\r\n