知识大全 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相关参考
在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv
createorreplacepackagemypack as typecursortestCursorisrefcursor; endmypack; tableName表名pageSiz
“俄罗斯存储过程”的改良版 CREATEprocedurepagination(@pagesizeint页面大小如每页存储条记录@pageindexint当前页码)assetnocountonb
高效SQL分页存储过程(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Book类负责查询数
SQL大数据量分页存储过程效率测试 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*存储过程分
ASP.NET利用存储过程实现分页 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先说下思路写
SQLServer千万数量级分页存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着信息
ASP.NET存储过程自定义分页详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
前台设计复制代码代码如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="pagingaspxcs"Inherits="五二一练习