Ich verwende Spring JDBC und Oracle SQL.Oracle SQL Merge-Anweisung mit nur 1 Tabelle und eine Reihe von Werten
Mit der SpringJDBC-Klasse MapSqlParameterSource habe ich die Daten zugeordnet, die ich zusammenführen möchte.
Jetzt möchte ich die Merge-Anweisung verwenden, um Datenbanktabelle zu aktualisieren/einzufügen. Alles, was ich habe, ist eine Tabelle und eine Reihe von Parametern, die ich zusammenführen möchte.
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);
Muss ich irgendwie eine temporäre Tabelle für die Schlüsselwort erstellen oder gibt es einen anderen Weg? Wie würde ich so zusammen gehen?
auch gibt es zwei eindeutige Schlüssel pr.id und pr.code. Manchmal ist der Parameter : ID ist Null, wenn dies passiert, ich möchte die Update-Anweisung basierend auf pr.code erhalten übereinstimmend mit: Code. Wird es immer noch funktionieren, wenn mein Update, um die Zeile enthält:
update set pr.code = :code,
Mit welchem Problem befassen Sie sich? – Teja
Das Schlüsselwort: "using (! Parameter sollte hier irgendwie gehen?)". Muss ich irgendwie eine temporäre Tabelle erstellen und nach der Verwendung einfügen oder gibt es eine andere Möglichkeit, meine Werte in diesen Zusammenführungssatz zu bringen. Und wenn es keinen anderen Weg gibt, wie mache ich eine temporäre Tabelle? – ollo
Nein, Sie brauchen keine temporäre Tabelle ... Überprüfen Sie diesen Link für die Zusammenführungssyntax.http: //docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm – Teja