sql >> Databasteknik >  >> RDS >> Oracle

Uppdatera tabell från en annan tabell i Oracle

I det här fallet bör du använda MERGE-satsen enligt nedan:

DECLARE
  l_date DATE:=TO_DATE('01/04/2017','DD/MM/YYYY');
BEGIN
  LOOP
    EXECUTE IMMEDIATE 'MERGE INTO EMPSHIFT E
USING SCHEDULEEMPLOYEES S
ON (S.EMPLOYEEID=E.EMPLOYEEID AND S.DAYDATE=TO_DATE('''||TO_CHAR(l_date)||''',''DD/MM/YYYY''))
WHEN MATCHED 
THEN UPDATE SET E."'||TO_CHAR(l_date)||'"=S.SHIFT';
    l_date:=l_date+1;
    EXIT
  WHEN l_date>TO_DATE('30/04/2017','DD/MM/YYYY');
  END LOOP;
END;

Du nämnde att du vill uppdatera poster, men om du vill infoga saknade poster (för saknade ANSTÄLLDA ID i EMPSHIFT-tabellen), se merge_insert_clause



  1. Uppföljare:Förälder med minst ett barn

  2. Är det möjligt att fånga det ogiltiga värdet i MySQL när jag får ett fel med en främmande nyckel?

  3. Sammansatt ELLER SQL-fråga (fråga #1 med WITH) och (fråga #2) med COUNT() ursäkter

  4. Mysql Query-problem med LIKE och apostrof