zoukankan      html  css  js  c++  java
  • 使用表变量或临时表遍历数据

    -- 方法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
  • 相关阅读:
    云题库错题分析
    数据库相关子查询
    阻止事件冒泡
    21分钟 MySQL 入门教程(转载!!!)
    java接口
    java访问修饰符
    小游戏,快速击键
    个人对Java中多态的一些简单理解
    简述抽象和封装,对你学习Java有一些作用
    Bank,我只是来完成作业的
  • 原文地址:https://www.cnblogs.com/zhchsh/p/9087274.html
Copyright © 2011-2022 走看看