Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Актуализация на една таблица въз основа на стойности в курсора на друга таблица

Правите две извличания преди първата актуализация. Опитайте се да преструктурирате цикъла си като:

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

Добавих ЛОКАЛНО и FAST_FORWARD опции за курсора. Документация за 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. Как да разбера дали даден низ съдържа специални символи?

  2. SQL Server 2008:ИЗБЕРЕТЕ ЗА АКТУАЛИЗАЦИЯ

  3. Как да анализирате дейността на една база данни в SQL Server

  4. Условни условия в SQL Server

  5. Как да получите списък с всички ограничения за проверка в базата данни на SQL Server - SQL Server / TSQL урок, част 85