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

Cập nhật SQL của một bảng dựa trên các giá trị trong con trỏ của bảng khác

Bạn thực hiện hai lần tìm nạp trước khi cập nhật lần đầu tiên. Cố gắng cấu trúc lại vòng lặp của bạn thành:

DECLARE @so VARCHAR(50)
DECLARE @line VARCHAR(50)
DECLARE @pdate DATETIME
DECLARE @reason1 VARCHAR(50)
DECLARE @reason2 VARCHAR(50)
DECLARE @area VARCHAR(50)

DECLARE mycursor CURSOR LOCAL FAST_FORWARD FOR 
SELECT [bp_so_number],[bp_line],[bp_production_date],[bp_reason1],[bp_reason2],[bp_area]
 FROM [Workflow].[dbo].[v_OTD_PostSrc]

 OPEN mycursor
 -- Always true
 WHILE 1 = 1
 BEGIN
    -- Get next record from cursor
    FETCH NEXT FROM mycursor
               INTO @so, @line, @pdate, @reason1, @reason2, @area;
    -- If there was a record @@fetch_status will be 0; 
    -- if not, or in case of an error, break the loop
    IF @@FETCH_STATUS <> 0
       break
    UPDATE otd_data SET [email protected], [email protected], [email protected] 
    WHERE [Order Number][email protected] AND [email protected] AND [Schedule Date][email protected] AND [Qty Open]>0
    --SELECT * FROM otd_data WHERE [Order Number][email protected] AND [email protected] AND [Schedule Date][email protected]
 END

CLOSE mycursor
DEALLOCATE mycursor

Tôi đã thêm LOCAL và FAST_FORWARD các tùy chọn đối với con trỏ. Tài liệu về FAST_FORWARD:




  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ỗi SQL động khi chuyển đổi nvarchar thành int

  2. Làm thế nào để Tìm các Hàng trùng lặp bởi một khóa nhưng không trùng lặp trong tất cả các cột?

  3. Cách tạo câu lệnh chèn từ tệp văn bản cho bảng SQL Server trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 106

  4. Định cấu hình Lucene.Net với SQL Server

  5. SQL Server - Xóa tất cả các ký tự ASCII không in được