知识大全 精彩的近乎完美的分页存储过程
Posted 知
篇首语:熟读唐诗三百首,不会作诗也会吟。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 精彩的近乎完美的分页存储过程相关的知识,希望对你有一定的参考价值。
CREATE procedure main_table_pwqzc (@pagesize int @pageindex int @docount bit @this_id) as if(@docount= ) begin select count(id) from luntan where this_id=@this_id end else begin declare @indextable table(id int identity( ) nid int) declare @PageLowerBound int declare @PageUpperBound int set @PageLowerBound=(@pageindex )*@pagesize set @PageUpperBound=@PageLowerBound+@pagesize set rowcount @PageUpperBound insert into @indextable(nid) select id from luntan where this_id=@this_id order by reply_time desc select a * from luntan a @indextable t where a id=t nid and t id>@PageLowerBound and t id<=@PageUpperBound order by t id end GO 存储过程会根据传入的参数@docount来确定是不是要返回所有要分页的记录总数 特别是这两行 set rowcount @PageUpperBound insert into @indextable(nid) select id from luntan where this_id=@this_id order by reply_time desc 真的是妙不可言!!set rowcount @PageUpperBound当记录数达到@PageUpperBound时就会停止处理查询 select id 只把id列取出放到临时表里 select a * from luntan a @indextable t where a id=t nid and t id>@PageLowerBound and t id<=@PageUpperBound order by t id 而这句也只从表中取出所需要的记录 而不是所有的记录 结合起来 极大的提高了效率!! 妙啊 真的妙!!!! CREATE PROCEDURE Paging_RowCount ( @Tables varchar( ) @PK varchar( ) @Sort varchar( ) = NULL @PageNumber int = @PageSize int = @Fields varchar( ) = * @Filter varchar( ) = NULL @Group varchar( ) = NULL) AS /*Default Sorting*/ IF @Sort IS NULL OR @Sort = SET @Sort = @PK /*Find the @PK type*/ DECLARE @SortTable varchar( ) DECLARE @SortName varchar( ) DECLARE @strSortColumn varchar( ) DECLARE @operator char( ) DECLARE @type varchar( ) DECLARE @prec int /*Set sorting variables */ IF CHARINDEX( DESC @Sort)> BEGIN SET @strSortColumn = REPLACE(@Sort DESC ) SET @operator = <= END ELSE BEGIN IF CHARINDEX( ASC @Sort) = SET @strSortColumn = REPLACE(@Sort ASC ) SET @operator = >= END IF CHARINDEX( @strSortColumn) > BEGIN SET @SortTable = SUBSTRING(@strSortColumn CHARINDEX( @strSortColumn)) SET @SortName = SUBSTRING(@strSortColumn CHARINDEX( @strSortColumn) + LEN(@strSortColumn)) END ELSE BEGIN SET @SortTable = @Tables SET @SortName = @strSortColumn END SELECT @type=t name @prec=c prec FROM sysobjects o JOIN syscolumns c on o id=c id JOIN systypes t on c xusertype=t xusertype WHERE o name = @SortTable AND c name = @SortName IF CHARINDEX( char @type) > SET @type = @type + ( + CAST(@prec AS varchar) + ) DECLARE @strPageSize varchar( ) DECLARE @strStartRow varchar( ) DECLARE @strFilter varchar( ) DECLARE @strSimpleFilter varchar( ) DECLARE @strGroup varchar( ) /*Default Page Number*/ IF @PageNumber < SET @PageNumber = /*Set paging variables */ SET @strPageSize = CAST(@PageSize AS varchar( )) SET @strStartRow = CAST(((@PageNumber )*@PageSize + ) AS varchar( )) /*Set filter & group variables */ IF @Filter IS NOT NULL AND @Filter != BEGIN SET @strFilter = WHERE + @Filter + SET @strSimpleFilter = AND + @Filter + END ELSE BEGIN SET @strSimpleFilter = SET @strFilter = END IF @Group IS NOT NULL AND @Group != SET @strGroup = GROUP BY + @Group + ELSE SET @strGroup = /*Execute dynamic query*/ EXEC( DECLARE @SortColumn + @type + SET ROWCOUNT + @strStartRow + SELECT @SortColumn= + @strSortColumn + FROM + @Tables + @strFilter + + @strGroup + ORDER BY + @Sort + SET ROWCOUNT + @strPageSize + SELECT + @Fields + FROM + @Tables + WHERE + @strSortColumn + @operator + @SortColumn + @strSimpleFilter + + @strGroup + ORDER BY + @Sort + ) GO cha138/Article/program/Oracle/201311/17031相关参考
oracle存储过程分页代码是怎么实现的我们来看下实验小编为您整理的方法吧! /*******存储过程分页代码**********/ 包头 createorreplacepackagepck
分页SQLServer存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*用存储过程实现
“俄罗斯存储过程”的改良版 CREATEprocedurepagination(@pagesizeint页面大小如每页存储条记录@pageindexint当前页码)assetnocountonb
createorreplacepackagemypack as typecursortestCursorisrefcursor; endmypack; tableName表名pageSiz
高效SQL分页存储过程(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Book类负责查询数
CREATEPROCmyx_prPageRecordset @queryStrnvarchar() @keyFieldnvarc
SQL大数据量分页存储过程效率测试 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*存储过程分
ASP.NET利用存储过程实现分页 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先说下思路写
SQLServer千万数量级分页存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着信息
ASP.NET存储过程自定义分页详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n