sql >> Database >  >> RDS >> Sqlserver

Hoe de cursor te gebruiken om het record bij te werken

Het lijkt erop dat u een verhoogde waarde wilt toewijzen aan empno beginnend met 10.

U kunt hiervoor een CTE en row_number() gebruiken. Geen cursor nodig.

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

Je cursorversie zou er zo uit kunnen zien om hetzelfde te doen.

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. Hoe regelafstand tussen regels in Textarea te verwijderen?

  2. Mysql selecteer het verkeerde antwoord geven in php

  3. Kunnen we parameters doorgeven aan een weergave in SQL?

  4. Android SQLite LIKE escape-jokerteken