Aktualizacja tabeli docelowej

0

Witam,
Próbuję napisać kod który zadziała zgodnie z poniższymi założeniami.
Mamy 2 tabele źródłową (TAB_SRC) i tabelę docelową (TAB_DST)

  1. Chciałbym wykonać update wszystkich rekordów (jeśli istnieją) w tabeli docelowej - rekordami z tabeli źródłowej.
  2. Jeśli w tabeli docelowej nie ma rekordu z tabeli źrodłowej - to chciałbym wykonać insert.
  3. Mógłbym zastosować merge natomiast zdecydowałem sie na kursor z tego względu ze obie tabele mają bardzo dużą liczbę kolumn.
    Nie chcę wypisywać kilkudziesięciu kolumn w insertach i updatach.
    Wykombinowałem coś takiego jak poniżej ale niestety nie działa - jakieś podpowiedzi?
    Dzięki :)
BEGIN
        FOR REC1 IN (SELECT * FROM TAB_SRC)
            LOOP
                UPDATE TAB_DST SET ROW = REK1 WHERE TAB_DST.ID=REK1.ID;
            	BEGIN
                	EXCEPTION WHEN OTHER THEN 
                	INSERT INTO TAB_DST VALUES (REC1);
                GOTO P1;
                END;
                <<P1>>;
                NULL;
            END LOOP;
END;
0

Nie wiem co kombinowałeś, ale w t-sql nie da się wykorzystać Update i aktualizować cały wiersz/rekord, chyba że ja czegoś nie wiem: https://msdn.microsoft.com/en-us/library/ms177523(v=sql.110).aspx

Więc pozostaje jeden update i insert z przełamaniem niechęci do wypisania kilkudziesięciu kolumn, jeżeli masz sql w wersji od 2008 to możesz jednym zapytaniem wykorzystując MERGE https://msdn.microsoft.com/en-us/library/bb510625.aspx

0

To PL/SQL (oracle)

0

Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1