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

Pembaruan SQL dari satu tabel berdasarkan nilai di kursor tabel lain

Anda melakukan dua pengambilan sebelum pembaruan pertama. Coba atur ulang loop Anda sebagai:

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

Saya telah menambahkan LOCAL dan FAST_FORWARD pilihan ke kursor. Dokumentasi di 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. Mengapa saya mendapatkan hasil yang berbeda ini dari dua kueri SQL?

  2. Mengambil variabel keluaran SQL Server di c#

  3. Kurangi fragmentasi tabel SQL Server tanpa menambahkan/menjatuhkan indeks berkerumun?

  4. Menyebarkan Grup Ketersediaan SQL Server AlwaysOn di Linux

  5. Bagaimana cara menulis pernyataan if else dalam bahasa ekspresi Reporting Services?