Używam Spring JDBC i Oracle SQL.Wyjaśnienie SQL Merge z tylko jedną tabelą i garść wartości
przy użyciu klasy SpringJDBC MapSqlParameterSource, mapowałem dane, które chcę scalić.
Teraz chcę użyć instrukcji merge do aktualizacji/wstawienia tabeli bazy danych. Wszystko, co mam, to jedna tabela i kilka parametrów, które chcę scalić.
merge into proj.person_registry pr
using (! parameters should go here somehow?)
on (pr.id = :id or pr.code = :code)
when matched then
update set pr.code = :code,
pr.name = :name,
pr.firstname = :firstname,
pr.cl_gender = :cl_gender,
pr.cl_status = :cl_status,
pr.aadress = :aadress,
pr.aadress_date = :aadress_date
when not matched then
insert values (:code, :name, :firstname, :cl_gender, :cl_status, ;aadress, :aadress_date);
muszę jakoś utworzyć tabelę tymczasową dla użyciu słowa kluczowego lub jest jakiś inny sposób? jak mógłbym się tak scalić?
Istnieją również dwa unikatowe klucze pr.id i pr.code. Czasami parametr : id jest null, gdy tak się stanie chcę osiągnąć instrukcję aktualizacji opartą na kod pr.code dopasowywanym do: code. Będzie nadal działać, jeśli mój aktualizacja zawiera linię:
update set pr.code = :code,
Z jakim problemem stoisz? – Teja
Słowo kluczowe: "używając (! Parametry powinny tu jakoś pójść?)". Czy muszę w jakiś sposób utworzyć tabelę tymczasową i umieścić ją po użyciu lub jest jakiś inny sposób, aby uzyskać moje wartości w tym zdaniu scalającym. A jeśli nie ma innego sposobu, jak zrobić tabelę tymczasową? – ollo
Nie potrzebujesz żadnej tabeli tymczasowej ... Sprawdź ten link, aby uzyskać składnię łączenia.http: //docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm – Teja