使用表变量或临时表遍历数据

-- 方法1:使用表变量
  -- 声明表变量
  DECLARE @temp TABLE
  (
      empid INT,
      firstname NVARCHAR(10),
      lastname NVARCHAR(20)
  );
 
 -- 将源表中的数据插入到表变量中
 INSERT INTO @temp(empid, firstname, lastname )
 SELECT empid,firstname,lastname FROM HR.Employees
 ORDER BY empid;
 
 -- 声明变量
 DECLARE
     @empid AS INT,
     @firstname AS NVARCHAR(10),
     @lastname AS NVARCHAR(20);
    
 WHILE EXISTS(SELECT empid FROM @temp)
 BEGIN
     -- 也可以使用top 1
     SET ROWCOUNT 1
     SELECT @empid= empid, @firstname= firstname,@lastname= lastname FROM @temp;
     UPDATE HR.Employees SET fullname= @firstname+' '+@lastname WHERE empid=@empid;
     SET ROWCOUNT 0
    
     DELETE FROM @temp WHERE empid=@empid;
 END

  -- 方法2:使用临时表
  -- 创建临时表
  IF OBJECT_ID('tempdb.dbo.#tempemployees','U') IS NOT NULL DROP TABLE dbo.#tempemployees;
  GO
 
  SELECT empid,firstname,lastname
  INTO dbo.#tempemployees
  FROM HR.Employees
  ORDER BY empid;
 
 --SELECT * FROM dbo.#tempemployees;
 
 -- 声明变量
 DECLARE
     @empid AS INT,
     @firstname AS NVARCHAR(10),
     @lastname AS NVARCHAR(20);
    
 WHILE EXISTS(SELECT empid FROM dbo.#tempemployees)
 BEGIN
     -- 也可以使用top 1
     SET ROWCOUNT 1
     SELECT @empid= empid, @firstname= firstname,@lastname= lastname FROM dbo.#tempemployees;
     UPDATE HR.Employees SET fullname= @firstname+' '+@lastname WHERE empid=@empid;
     SET ROWCOUNT 0
    
     DELETE FROM dbo.#tempemployees WHERE empid=@empid;
 END

 

转载于:https://www.cnblogs.com/zhchsh/p/9087274.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值