zoukankan      html  css  js  c++  java
  • 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 [AnyImageGuLou02].[grid].[BHosCheckES]
    
    --声明循环的变量
    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;
  • 相关阅读:
    LInux SSH远程文件/目录传输命令scp(转载)
    Linux系统时间设置(转载)
    Linux重置mysql密码(转载)
    快速输入(简单版)
    bitset
    或 、与、异或
    bitset
    Java面向对象3(K~O)
    Java面向对象2(G~J)
    数据结构实验之栈与队列六:下一较大值(二)(SDUT 3333)
  • 原文地址:https://www.cnblogs.com/seanyan/p/13824732.html
Copyright © 2011-2022 走看看