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 example@sqldat.com, example@sqldat.com, example@sqldat.com
WHERE [Order Number]example@sqldat.com AND example@sqldat.com AND [Schedule Date]example@sqldat.com AND [Qty Open]>0
--SELECT * FROM otd_data WHERE [Order Number]example@sqldat.com AND example@sqldat.com AND [Schedule Date]example@sqldat.com
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: