Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara menggunakan kursor untuk memperbarui catatan

Sepertinya Anda ingin menetapkan nilai tambahan ke empno yang dimulai dengan 10.

Anda dapat menggunakan CTE dan row_number() untuk melakukannya. Tidak perlu kursor.

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

Versi kursor Anda dapat terlihat seperti ini untuk melakukan hal yang sama.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menentukan apa yang dikompilasi di SQL Server

  2. Bagaimana melakukan pembaruan tabel Sql Server CE dari tabel lain

  3. Batas catatan tabel sementara di server Sql

  4. Tidak dapat mengakses tabel sementara dari dalam suatu fungsi

  5. Classic ADO.NET - Bagaimana Melewati UDT Ke Stored Procedure?