欢迎光临

木子屋

标题: T-SQL中替代游标遍历结果集的方法

作者: dnawo

日期: 2013-04-25 10:50 AM

分类: 服务器

内容: 1.借助主键字段实现方法
本方法先将数据复制到临时表，然后通过逐条读取并删除来实现替代游标遍历结果集：
复制内容到剪贴板 程序代码set nocount on
select * into #tab1 from Account
declare @id int, @name nvarchar(20)
select top 1 @id=Id,@name=Usn from #tab1
delete from #tab1 where Id=@id
while @@rowcount>0
begin
print @name
select top 1 @id=Id,@name=Usn from #tab1
delete from #tab1 where Id=@id
end
drop table #tab1
说明：本方法要求Id字段为主键且唯一，若数据量比较大，应使用create table创建临时表同时设置主键，否则处理时间会很长。
2.借助标识字段实现方法
若表中有标识字段，可借助min函数实现替代游标遍历结果集：
复制内容到剪贴板 程序代码declare @id int, @name nvarchar(20)
select top 1 @id=min(Id) from Account
while @id is not null
begin
select @name=Usn from Account where Id=@id
print @name
select top 1 @id=min(Id) from Account where Id>@id
end
若表中没有标识字段，可先将数据复制到临时表并创建标识字段，剩下的就和上边一样了：
复制内容到剪贴板 程序代码set nocount on
select identity(int,1,1) as 'Id', Usn into #tab1 from Account
declare @id int, @name nvarchar(20)
select top 1 @id=min(Id) from #tab1
while @id is not null
begin
select @name=Usn from #tab1 where Id=@id
print @name
select top 1 @id=min(Id) from #tab1 where Id>@id
end
drop table #tab1
本文方法在SQL Server2000/2005/2008测试通过。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 3.664 ms

返回

标题: T-SQL中替代游标遍历结果集的方法

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 3.664 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 3.711 ms

返回