Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách sử dụng con trỏ để cập nhật bản ghi

Có vẻ như bạn muốn gán một giá trị tăng dần cho empno bắt đầu bằng 10.

Bạn có thể sử dụng CTE và row_number () để làm điều đó. Không cần con trỏ.

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

Phiên bản con trỏ của bạn có thể trông giống như thế này để làm tương tự.

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. Lưu các thay đổi sau khi chỉnh sửa bảng trong SQL Server Management Studio

  2. Sử dụng OBJECTPROPERTY () để Tìm hiểu xem một Đối tượng có phải là Ràng buộc KIỂM TRA trong SQL Server hay không

  3. Lỗi nhập bằng Openrowset

  4. Thực thi một tập lệnh SQL lớn (với các lệnh GO)

  5. Không thể thay đổi thiết kế bảng trong SQL Server 2008