知识大全 精彩的近乎完美的分页存储过程

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存储过程分页代码

  oracle存储过程分页代码是怎么实现的我们来看下实验小编为您整理的方法吧!  /*******存储过程分页代码**********/  包头  createorreplacepackagepck

知识大全 分页SQLServer存储过程

分页SQLServer存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /*用存储过程实现

知识大全 sql存储过程分页算法研究

  “俄罗斯存储过程”的改良版  CREATEprocedurepagination(@pagesizeint页面大小如每页存储条记录@pageindexint当前页码)assetnocountonb

知识大全 oracle分页存储过程

  createorreplacepackagemypack  as  typecursortestCursorisrefcursor;  endmypack;  tableName表名pageSiz

知识大全 高效SQL分页存储过程(2)

高效SQL分页存储过程(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Book类负责查询数

知识大全 sql存储过程分页

  CREATEPROCmyx_prPageRecordset   @queryStrnvarchar()   @keyFieldnvarc

知识大全 SQL大数据量分页存储过程效率测试

SQL大数据量分页存储过程效率测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /*存储过程分

知识大全 ASP.NET利用存储过程实现分页

ASP.NET利用存储过程实现分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先说下思路写

知识大全 SQL Server 千万数量级 分页 存储过程

SQLServer千万数量级分页存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着信息

知识大全 ASP.NET存储过程自定义分页详解

ASP.NET存储过程自定义分页详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n