您的位置:首页 > 编程语言 > Go语言

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

2006-12-11 08:59 411 查看
因为不技术加Top 后面 加参数,所以不能直接用Top @top 来记取前@top条记录.

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

详细代码:

 


-- 查找表的前@top条记录章集合


CREATE PROC dbo.usp_TableName_GetTop


(


    @top int        -- 要读取的记录数


)


AS




-- 存放第一次读取的前100记录的临时表


CREATE TABLE #TemAllRecord


(


    IndexID int IDENTITY (1, 1) NOT NULL, --标识列


    RecordID bigint


)




-- 存放真正要读取的前@top条记录


CREATE TABLE #TemTopRecord


(


    IndexID int IDENTITY (1, 1) NOT 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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  存储 insert table null go