All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
数据库绑定控件DataGridView属性、方法和事件
ASP.NET,2.0服务器控件之验证控件示例_[Asp.Net教程]
关于PHP动态网页session问题的解决方案_php资料_编程技术
微软.Net开发中的多线程编程总结_[Asp.Net教程]
如何利用SQL查询返回庞大的整数序列表_[SQL Server教程]
HTML网页制作基础教程(2):标记的写法_[Html教程]
Div布局中如何实现自适应高度_[Html教程]
配置ASP.net的运行环境_[Asp.Net教程]
调用VS数据源实现数据库连接字符串配置_.net资料_编程技术
visual c++中字体类CFont的用法
Reading number is top 10 pictures
The money of more than 100 countries and regions11
大四女生借债隆胸成功
日本小萝莉2
The real super beauty14
胸部遭到偷窥的女人们
乳娘帕梅拉安德森2
Ashlynn Brooke show proud chest measurement2
So beauty, will let you spray blood3
Look at the Spring Festival people crowded into the what kind
女人化妆前后的对比
Download software ranking
终极变速大师Speeder3.26
Ashlynn Video5
linux初级教程
Unix video tutorial8
C++教程第四版
Unix video tutorial17
美女写真2
尖东毒玫瑰A
美女游泳记
Tram sex maniac 2 (H) rar bag19
归海一刀 published in(发表于) 2014/2/1 0:13:29 Edit(编辑)
sql,存储过程分页_[SQL,Server教程]

sql,存储过程分页_[SQL,Server教程]

sql 存储过程分页_[SQL Server教程]

CREATE PROC myx_prPageRecordset
@queryStr nvarchar(1000),
@keyField nvarchar (200),
@pageSize int,
@pageNumber int
AS
BEGIN
DECLARE @sqlText AS nvarchar(4000)
DECLARE @sqlTable AS nvarchar(4000)
SET @sqlTable = 'SELECT TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @queryStr
SET @sqlText =
'SELECT TOP ' + CAST(@pageSize AS varchar(30)) + ' * ' +
'FROM (' + @sqlTable + ') AS tableA ' +
'WHERE ' + @keyField + ' NOT IN(SELECT TOP ' +
CAST(@pageNumber * @pageSize AS varchar(30)) + ' ' + @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, 1000))
myComm.Parameters("@queryStr").Value = " * from tbpage order by id DESC"
myComm.Parameters.Add(New SqlClient.SqlParameter("@keyField", SqlDbType.NVarChar, 200))
myComm.Parameters("@keyField").Value = "[id]"
myComm.Parameters.Add(New SqlClient.SqlParameter("@pageSize", SqlDbType.NVarChar, 1000))
myComm.Parameters("@pageSize").Value = PageSize
myComm.Parameters.Add(New SqlClient.SqlParameter("@pageNumber", SqlDbType.NVarChar, 1000))
myComm.Parameters("@pageNumber").Value = myPage - 1


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


建立一个test(id,name,fid)


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


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


问题出来了,看输出结果(注意id):
id name fid
4 kwklover 2
5 kwklover 2
6 kwklover 2


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


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


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


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


End
GO







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.