Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Aktualizacja SQL jednej tabeli na podstawie wartości pod kursorem innej tabeli

Przed pierwszą aktualizacją wykonujesz dwa pobrania. Spróbuj zmienić strukturę pętli w następujący sposób:

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

Dodałem LOKALNE i FAST_FORWARD opcje do kursora. Dokumentacja dotycząca 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. 4 sposoby zapobiegania przeciążeniu alertów dzięki monitorowaniu serwera SQL

  2. Jak sortować ciąg alfabetycznie?

  3. Jak uzyskać sześciotygodniową liczbę niedziel za pomocą Weekno w SQL Server 2008?

  4. Użyj @@IDENTITY, aby zwrócić ostatnio wstawioną wartość tożsamości w programie SQL Server

  5. Problem z parametrami wyjściowymi programu SQL Server