超经典的存储过程分页 ;-) 引自CSDN网友所作
| 主 題: | 好東西分享喲!! 利用SqlServer內(nèi)部存儲(chǔ)過(guò)程實(shí)現(xiàn)快速方便的分頁(yè) | |
| 作 者: | zxbyhcsdn (沙子) ?????? Blog | |
| 等 級(jí): | ||
| 信 譽(yù) 值: | 97 | |
| 所屬社區(qū): | MS-SQL Server 應(yīng)用實(shí)例 | |
| 問(wèn)題點(diǎn)數(shù): | 200 | |
| 回復(fù)次數(shù): | 47 | |
| 發(fā)表時(shí)間: | 2007-2-9 15:23:49 |
> SqlServer內(nèi)部的分頁(yè)功能,強(qiáng)啊!!
1)只需要提供Sql語(yǔ)句和每頁(yè)的記錄數(shù),頁(yè)數(shù)就可以了
2)速度超快喲,100W記錄1~3秒就分出來(lái)了
3)對(duì)于存儲(chǔ)過(guò)程特別好用
--//調(diào)用的方式
表
exec up_zbh_DivPageBySql 'select * from 表',10,3
存儲(chǔ)過(guò)程
exec up_zbh_DivPageBySql 'exec 存儲(chǔ)過(guò)程',10,1
--//我吧它封裝成一個(gè)存儲(chǔ)過(guò)程,調(diào)用的時(shí)候方便的很哈!!
create procedure up_zbh_DivPageBySql
?@strSql varchar(8000),
?@nPageSize int,
?@nPageCount int
as
??? SET NOCOUNT ON
??? DECLARE @P1 INT,
??? @nRowCount INT
??? --//注意:@scrollopt = 1 會(huì)取得Select的時(shí)候的總行數(shù)
??? EXEC sp_cursoropen @P1 OUTPUT, @strSql, @scrollopt = 2, @ccopt = 335873, @rowcount = @nRowCount OUTPUT
??? IF (@P1 != 0)
??? BEGIN
--SELECT @nRowCount AS nRecordCount, ceiling(1.0 * @nRowCount / @nPageSize) AS nPageCount, @nPageCount AS nPage
SET @nPageCount = (@nPageCount - 1) * @nPageSize + 1
EXEC sp_cursorfetch @P1, 32, @nPageCount, @nPageSize?
EXEC sp_cursorclose @P1
??? END
GO
--//調(diào)用的方式
表
exec up_zbh_DivPageBySql 'select * from 表',10,3
存儲(chǔ)過(guò)程
exec up_zbh_DivPageBySql 'exec 存儲(chǔ)過(guò)程',10,1
好東東,拿出來(lái)給大家共享,哈哈!!
比以前的那些個(gè)存儲(chǔ)過(guò)程分頁(yè)方便,簡(jiǎn)單多了!!
轉(zhuǎn)載于:https://www.cnblogs.com/bigmouthz/archive/2007/02/12/648010.html
總結(jié)
以上是生活随笔為你收集整理的超经典的存储过程分页 ;-) 引自CSDN网友所作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: lz0-007 读书笔记09
- 下一篇: “当前上下文中不存在名称”解决