知识大全 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相关参考
“俄罗斯存储过程”的改良版 CREATEprocedurepagination(@pagesizeint页面大小如每页存储条记录@pageindexint当前页码)assetnocountonb
SQL大数据量分页存储过程效率测试 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*存储过程分
SQLServer千万数量级分页存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着信息
项目接近尾声了感觉将业务逻辑放到oracle中使得后台代码很精简oracle很有搞头! PL\\SQL: createorreplaceprocedureproc_client_List客户多
oracle存储过程分页代码是怎么实现的我们来看下实验小编为您整理的方法吧! /*******存储过程分页代码**********/ 包头 createorreplacepackagepck
分页SQLServer存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*用存储过程实现
在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv
createorreplacepackagemypack as typecursortestCursorisrefcursor; endmypack; tableName表名pageSiz
ASP.NET利用存储过程实现分页 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先说下思路写
ASP.NET存储过程自定义分页详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n