科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件不用游标从表中取出前N条记录的存储过程

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

先根据业务情况定一个较大值,用来先把表中的前N记录读取出来.放在一个临时表中.

作者:刘晓松 来源:CSDN 2008年1月12日

关键字: 存储 记录 取出 游标 Windows

  • 评论
  • 分享微博
  • 分享邮件

因为不技术加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


查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章