VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > T-SQL >
  • SqlServer使用表变量或临时表遍历数据

1、sql脚本使用表变量遍历数据示例:

复制代码
--表变量1
declare @tempTb Table(ID int, Name nvarchar(64))

--表变量2
declare @DtTb Table(ID int, Name nvarchar(64))

insert into @DtTb select top 100 ID,Name from [dbo].[Students]

--声明循环的变量
declare @ID int;

--通过ID循环
while exists(select ID from @DtTb)
begin
    set rowcount 1; --对整个会话取数据有效,即若以下有查询语句,也是限定只取一条
    --select top 1 @ID = ID from @DtTb; --用 top 1 只对此句查询有效
    select @ID = ID from @DtTb;   

    --具体遍历业务
    insert into @tempTb select * from @DtTb where ID=@ID;

    set rowcount 0; --取消限定
    --遍历完一条一定要删掉此条,否则死循环!
    delete from @DtTb where ID=@ID;
end

select * from @tempTb;
delete from @tempTb;
复制代码

 

2、sql脚本使用临时表遍历数据示例:

复制代码
--临时表1
create Table #tempTb(ID int, Dbo nvarchar(64))

--临时表2
create Table #DtTb(ID int, Dbo nvarchar(64))

insert into #DtTb select top 100 ID,Dbo from [TestDb].[dbo].[Table1]

--声明循环的变量
declare @ID int;

--通过ID循环
while exists(select ID from #DtTb)
begin
    --set rowcount 1; --对整个会话取数据有效,即若以下有查询语句,也是限定只取一条
    select top 1 @ID = ID from #DtTb; --用 top 1 只对此句查询有效
    --select @ID = ID from #DtTb;   

    --具体遍历业务
    insert into #tempTb select * from #DtTb where ID=@ID;

    --set rowcount 0; --取消限定
    --遍历完一条一定要删掉此条,否则死循环!
    delete from #DtTb where ID=@ID;
end

select * from #tempTb;
--select * from #DtTb;

--用完记得删掉临时表!
drop table #tempTb;
drop table #DtTb;
复制代码

出处:https://www.cnblogs.com/seanyan/p/13824732.html


相关教程