Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zaktualizuj tabelę z innej tabeli w Oracle

W takim przypadku należy użyć instrukcji MERGE, jak poniżej:

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;

Wspomniałeś, że chcesz zaktualizować rekordy, ale jeśli chcesz wstawić brakujące rekordy (dla braku EMPLOYEEID w tabeli EMPSHIFT), zapoznaj się z merge_insert_clause



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tylko jedno aktywne dla każdego ograniczenia relacji

  2. Jak uzyskać kolumnę klucza podstawowego w Oracle?

  3. SQL nie jest funkcją jednogrupową

  4. Łączenie się z bazą danych Oracle z obsługą SSL przez Java (JDBC)

  5. Funkcja JSON_TABLE() w Oracle