知识大全 sql存储过程分页

Posted

篇首语:实践是知识的母亲,知识是生活的明灯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 sql存储过程分页相关的知识,希望对你有一定的参考价值。

  CREATE PROC myx_prPageRecordset    @queryStr nvarchar( )     @keyField nvarchar ( )     @pageSize int     @pageNumber int    AS    BEGIN    DECLARE @sqlText AS nvarchar( )    DECLARE @sqlTable AS nvarchar( )    SET @sqlTable = SELECT TOP + CAST((@pageNumber + ) * @pageSize AS varchar( )) + + @queryStr    SET @sqlText =    SELECT TOP + CAST(@pageSize AS varchar( )) + * +    FROM ( + @sqlTable + ) AS tableA +    WHERE + @keyField + NOT IN(SELECT TOP +    CAST(@pageNumber * @pageSize AS varchar( )) + + @keyField +    FROM ( + @sqlTable + ) AS tableB)     EXEC (@sqlText)    END

  GO

  核心代码    Dim strsql As String    myComm = New SqlClient SqlCommand( myx_prPageRecordset myConn)    myComm CommandType = CommandType StoredProcedure    myComm Parameters Add(New SqlClient SqlParameter( @queryStr SqlDbType NVarChar ))    myComm Parameters( @queryStr ) Value = * from tbpage order by id DESC     myComm Parameters Add(New SqlClient SqlParameter( @keyField SqlDbType NVarChar ))    myComm Parameters( @keyField ) Value = [id]     myComm Parameters Add(New SqlClient SqlParameter( @pageSize SqlDbType NVarChar ))    myComm Parameters( @pageSize ) Value = PageSize    myComm Parameters Add(New SqlClient SqlParameter( @pageNumber SqlDbType NVarChar ))    myComm Parameters( @pageNumber ) Value = myPage

  呵呵 执行几W条的代码只需 毫秒左右

  建立一个test(id name fid)

  向test添充几十条数据 使id= (即递增的integer) 其他任意在T sql Debugger给改存储过程分别传递如下参数:

  @queryStr= * from test    @keyField=[ID]    @pageSize=     @pageNumber=

  问题出来了 看输出结果(注意id):    id name fid    kwklover     kwklover     kwklover

  根据传入参数 我们的预期应该是:    id name fid    kwklover     kwklover     kwklover

  下面是我参照小春的存储分页写的分页存储过程 可以解决上面的问题:    CREATE Procedure prGetRecordByPage    (    @PageSize int 每页的记录条数    @PageNumber int 当前页面    @QuerySql varchar( ) 部分查询字符串 如* From Test order by id desc    @KeyField varchar( )    )    AS    Begin

  Declare @SqlTable AS varchar( )    Declare @SqlText AS Varchar( )

  Set @SqlTable= Select Top +CAST(@PageNumber*@PageSize AS varchar( ))+ +@QuerySql    Set @SqlText= Select Top +Cast(@PageSize AS varchar( ))+ * From     + ( +@SqlTable+ ) As TembTbA     + Where +@KeyField+ Not In (Select Top +CAST((@PageNumber )*@PageSize AS varchar( ))+ +@KeyField+ From     + ( +@SqlTable+ ) AS TempTbB)     Exec(@SqlText)

cha138/Article/program/Oracle/201311/17708

相关参考

知识大全 一个简单的oracle分页存储过程的实现和调用

  在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv

知识大全 oracle分页存储过程

  createorreplacepackagemypack  as  typecursortestCursorisrefcursor;  endmypack;  tableName表名pageSiz

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

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

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

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

知识大全 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

知识大全 三层+存储过程实现分页示例代码

  前台设计复制代码代码如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="pagingaspxcs"Inherits="五二一练习