存储过程使用:分页存储
2013-11-04 16:24
99 查看
参照:http://www.cnblogs.com/panthervic/archive/2012/02/21/2361556.html
测试
测试
declare @RecordCount int declare @subject VARCHAR(200) declare @sDate datetime declare @eDate datetime declare @sortName VARCHAR(20) declare @sortOrder VARCHAR(10) declare @PageIndex Int declare @PageSize Int --set @sortOrder='id' --set @sortName='asc' exec Get_ProClawerData_DataList_ByPage @subject,@sDate,@eDate,'id','asc',1,10,@RecordCount out
-- ============================================= -- Author: <Snow.Li> -- Create date: <2012-11-27> -- Description: -- ============================================= alter PROCEDURE [dbo].[Get_ProClawerData_DataList_ByPage] ( @subject VARCHAR(200) = NULL, @sDate datetime = NULL, @eDate datetime = NULL, @sortName VARCHAR(20) = NULL, @sortOrder VARCHAR(10) = NULL, @PageIndex Int = NULL, @PageSize Int = NULL, @RecordCount Int = NULL OUTPUT ) AS BEGIN DECLARE @Sql NVarChar(MAX) declare @orderStr varchar(50) DECLARE @Where VARCHAR(MAX) SET @Where = ' A.[IsManaged]=0 ' IF @subject IS NOT NULL and @subject != '' BEGIN SET @Where = @Where + ' AND A.Subject like ''%'+@subject+'%''' END IF @sDate IS NOT NULL and @sDate != '' BEGIN SET @Where = @Where + ' AND A.CreateTime >= '+@sDate+'' END IF @eDate IS NOT NULL and @eDate != '' BEGIN SET @Where = @Where + ' AND A.CreateTime <='+@eDate+'' END set @Sql=' SELECT A.[Id] , A.[KeyId] , A.[ParentKeyId] , A.[ReleaseTime] , A.[Source] , A.[Subject] , A.[SubjectURL] , A.[Brief] , A.[SameNumber] , A.[SameURL] , A.[CreateTime] , A.[CreateUserId] , A.[UpdateTime] , A.[UpdateUserId] , A.[Version] , A.[Type] ,A.[IsManaged] FROM [ProClawerData] as A where'+@Where set @orderStr = '['+@sortName+'] '+@sortOrder; exec GetPage @sql,'ID',@PageIndex,@PageSize,@orderStr,@orderStr,@RecordCount output END GO
CREATE PROCEDURE [dbo].[GetPage] @SQL [VARCHAR](8000), --SQL STATMENT @PKEY [VARCHAR](100), --PRIMARY KEY NAME @PAGENO [INT], --CURRENT PAGE NO @PAGESIZE [INT], --PAGESIZE @SORTBYALL [VARCHAR](1000), --SORT ALL DATA @SORTBYPAGE [VARCHAR](1000), --SORT CURRENT PAGE DATA @RECORDCOUNT [INT] OUTPUT --RECORD COUNT THIS PAGE RETURN As Begin declare @inner_sql [NVARCHAR](4000) if @PAGENO= 1 ---区分是否是第一页,如果页数大于1,则需要过滤掉每一页的第一条 begin set @inner_sql = ' select * from ( '+ ' select row_number() over (order by '+ @SORTBYALL +') as row,* from (' + @SQL + ') t ) T_Table '+ ' where row between '+ convert(varchar,@PAGESIZE*(@PAGENO-1)) + ' and ' + convert(varchar,@PAGESIZE*@PAGENO) +' order by ' + @SORTBYPAGE end else set @inner_sql = ' select * from ( '+ ' select row_number() over (order by '+ @SORTBYALL +') as row,* from (' + @SQL + ') t ) T_Table '+ ' where row between '+ convert(varchar,@PAGESIZE*(@PAGENO-1)) + ' and ' + convert(varchar,@PAGESIZE*@PAGENO) +' and row<> '+convert(varchar,@PAGESIZE*(@PAGENO-1)) +' order by ' + @SORTBYPAGE exec(@inner_sql) DECLARE @SQLSTR [NVARCHAR](4000); SET @SQLSTR ='SELECT @COUNT = COUNT(1) FROM ('+@SQL+') AS AA'; EXECUTE SP_EXECUTESQL @SQLSTR,N'@COUNT [INT] OUT',@RECORDCOUNT OUT; --select @RECORDCOUNT as @RECORDCOUNT end GO
相关文章推荐
- SQL Server 索引使用分析(3)- 通用分页显示存储过程
- 使用Row_Number的分页存储过程
- 分页存储过程(一)使用sql2005的新函数构造分页存储过程
- asp.net 调用 mysql 分页存储过程,repeater使用mysql分页存储过程,mysql 存储过程的注意事项
- asp.net之DataList的使用方法,及分页(存储过程创建),编辑,更新,删除
- 使用AspNetPager分页控件、分页存储过程及用户控件基类实现的完美分页功能
- 使用数据库存储过程完成一个简单分页
- asp.net结合aspnetpager使用SQL2005的存储过程分页(转)
- 使用系统存储过程实现的通用分页存储过程
- 使用系统存储过程实现的通用分页存储过程.sql
- 使用数据库手工分页存储过程示例
- asp.net结合aspnetpager使用SQL2005的存储过程分页(转)
- C#中使用存储过程,C#分页存储过程
- 使用AspNetPager分页控件、分页存储过程及用户控件基类实现的完美分页功能
- 一个分页存储过程的使用
- SQL Server的通用分页存储过程 未使用游标,速度更快!
- 使用李天平代码生成器中分页存储过程的问题
- 使用数据库手工分页存储过程示例
- 使用ROW_NUMBER()的分页存储过程