1. 程式人生 > >使用表變量或臨時表遍歷數據

使用表變量或臨時表遍歷數據

插入 upd emp 聲明 spa exists nvarchar rom row

-- 方法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

使用表變量或臨時表遍歷數據