1 USE [test] 2 GO 3 /****** Object: StoredProcedure [dbo].[PageIndex] Script Date: 12/07/2011 10:26:36 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 ALTER PROCEDURE [dbo].[PageIndex] 9 ( 10 @Tbname varchar(100),--表名字 11 @Strfield varchar(100),--查询字段 12 @idfield varchar(50),--主键ID 13 @Toppage int=10,--每页行数 14 @PageNow int=0,--查询页数 15 @strWhere varchar(100) ='1=1',--查询条件 16 @Pagecount int=0 output,--总页数 17 @order varchar(200)=''--排序条件 18 ) 19 AS 20 DECLARE @sql nvarchar(1000), 21 @sqloder varchar(200) 22 BEGIN 23 if(@Pagecount=0)--总页数 24 begin 25 declare @page int 26 set @sql= 'select @Page=COUNT('+@idfield+') from '+@Tbname+ ' where '+@strWhere 27 print @sql 28 exec sp_executesql @sql,N'@Page int output',@Page output--查询总行数 29 SELECT @pageCount=CEILING((@page+0.0)/@Toppage) --计算页数 30 print @pageCount 31 end 32 if(@order!='')--排序条件 33 begin 34 set @sqloder='ORDER BY '+@order 35 end 36 else 37 begin 38 set @sqloder='' 39 end 40 if(@strWhere!='')--查询条件 41 begin 42 set @strWhere='where '+@strWhere 43 end 44 begin--执行SQL语句 45 --/* 46 set @sql='SELECT TOP ' 47 +cast(@Toppage as varchar(200))+ 48 ' '+@Strfield+' FROM (SELECT '+@Strfield+',ROW_NUMBER() OVER (ORDER BY ' 49 +@order+') AS RowNumber 50 FROM '+@Tbname+') A WHERE RowNumber > ' 51 +cast(@Toppage as varchar(200))+' * (' 52 +cast(@PageNow as varchar(200))+'-1) '+@sqloder 53 --*/ 54 --print @sql 55 /*set @sql ='SELECT TOP '+cast(@Toppage as varchar(200))+' '+@Strfield+ ' 56 FROM '+@Tbname+' 57 WHERE '+@idfield+' > 58 ( 59 SELECT ISNULL(MAX('+@idfield+'),0) 60 FROM 61 ( 62 SELECT TOP ('+cast(@Toppage as varchar(200))+'*('+cast(@PageNow as varchar(200))+'-1)) 63 '+@idfield+' FROM '+@Tbname+' '+@sqloder+' 64 ) A 65 ) '+@sqloder*/ 66 print (@sql) 67 exec (@sql) 68 69 end 70 END
相关文章: