sql >> Databáze >  >> RDS >> Sqlserver

Jak používat kurzor k aktualizaci záznamu

Vypadá to, že chcete empno přiřadit zvýšenou hodnotu začínající 10.

K tomu můžete použít CTE a row_number(). Není potřeba kurzor.

;with C as
(
  select empno,
         9 + row_number() over(order by (select 1)) as NewEmpNo
  from emp       
)
update C
set empno = NewEmpNo

Vaše verze kurzoru může vypadat takto.

DECLARE @empno AS INT;
DECLARE @CurEmpNo AS INT;

SELECT @empno = 10;

DECLARE employee_cursor CURSOR FOR
  SELECT empno
  FROM   emp

OPEN employee_cursor;

FETCH NEXT FROM employee_cursor INTO @CurEmpNo

WHILE @@FETCH_STATUS = 0
  BEGIN
      UPDATE emp
      SET    empno = @empno
      WHERE  CURRENT OF employee_cursor;

      SELECT @empno = @empno + 1;

      FETCH NEXT FROM employee_cursor INTO @CurEmpNo
  END;

CLOSE employee_cursor;

DEALLOCATE employee_cursor;  


  1. Jak připojit řetězec ke klauzuli where v APEX Interactive Report SQL

  2. Najděte chybějící datum a přidejte je do výsledku - MySql

  3. Funkce MySQL COS() – Vrátí kosinus čísla v MySQL

  4. Plánované spuštění uložené procedury na SQL serveru