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

相关参考

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

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

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

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

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

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

知识大全 oracle多条件查询分页存储过程

  项目接近尾声了感觉将业务逻辑放到oracle中使得后台代码很精简oracle很有搞头!  PL\\SQL:  createorreplaceprocedureproc_client_List客户多

知识大全 oracle存储过程分页代码

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

知识大全 分页SQLServer存储过程

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

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

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

知识大全 oracle分页存储过程

  createorreplacepackagemypack  as  typecursortestCursorisrefcursor;  endmypack;  tableName表名pageSiz

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

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

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

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