首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > 不用游标从表中取出前N条记录的存储过程
【标  题】:不用游标从表中取出前N条记录的存储过程
【关键字】:
【来  源】:http://blog.csdn.net/Anckly/archive/2006/12/09/1436785.aspx

不用游标从表中取出前N条记录的存储过程

因为不技术加Top 后面 加参数,所以不能直接用Top @top 来记取前@top条记录.

所以想了个办法,基本实现原理就是,先根据业务情况定一个较大值,用来先把表中的前N记录读取出来.放在一个临时表中.再从已经取出来的N条记录中筛选出真正要返回的前@top条记录:

详细代码:

 

-- 查找表的前@top条记录章集合
CREATE PROC dbo.usp_TableName_GetTop
(
    
@top int        -- 要读取的记录数
)
AS

-- 存放第一次读取的前100记录的临时表
CREATE TABLE #TemAllRecord
(
    IndexID 
int IDENTITY (11NOT NULL--标识列
    RecordID bigint
)

-- 存放真正要读取的前@top条记录
CREATE TABLE #TemTopRecord
(
    IndexID 
int IDENTITY (11NOT NULL--标识列
    RecordID bigint
)

-- 读出前100条记录写入临时表#TemAllRecord
INSERT INTO 
#TemAllRecord(RecordID)
SELECT TOP 100
[RecordID]
FROM
TableName

-- 从临时表#TemAllRecord读出真正需要的前@top条记录
INSERT INTO 
#TemTopRecord(RecordID)
SELECT
[RecordID]
FROM
#TemAllRecord
WHERE
[IndexID] <= @top    -- 关键点,通过标识列值来选择数量


SELECT
*
FROM
TableName t,#TemTopRecord r
WHERE
t.RecordID 
= r.RecordID

GO
PostgreSQL 8.2 的值得注意的特性:【上一篇】
环境的测试电影模式下测试, 所有SWF文件必须存放:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 惊艳:超级模特photoshop上色大法
  • linux用户&用户组
  • Fireworks制作礼花动画
  • 17黑客<谁动了我电脑>保护计算机 三
  • 搭建实验平台(一)
  • 海南酒店预定-海南酒店预定预订
  • zip文件的解压代码
  • 即时语音提示 & 校对软件InsTalk注册码及注册机 上
  • (转贴)世界编程大赛一等奖作品!
  • 操作系统入门(六) - 2 - 加入中断在保护模式试试看
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.