Sto utilizzando Spring JDBC e Oracle Oracle.Istruzione SQL merge SQL con solo 1 tabella e un gruppo di valori
utilizzando la classe SpringJDBC MapSqlParameterSource, ho mappato i dati che voglio unire.
Ora voglio utilizzare l'istruzione di unione per aggiornare/inserire la tabella del database. Tutto quello che ho è un tavolo e un mucchio di parametri che voglio unire in esso.
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);
devo creare in qualche modo una tabella temporanea per il utilizzando parola chiave o c'è un altro modo? come faccio a fondermi in questo modo?
inoltre ci sono due chiavi univoche pr.id e pr.code. A volte il parametro : id è null, quando ciò accade, voglio raggiungere l'istruzione di aggiornamento basata su pr.code ottenendo la corrispondenza con: codice. Sarà ancora funzionare se il mio aggiornamento contiene la riga:
update set pr.code = :code,
Che problema stai affrontando? – Teja
La parola chiave: "usando (i parametri! Dovrebbero andare qui in qualche modo?)". Devo creare un tavolo temporaneo in qualche modo e metterlo dopo l'uso o c'è un altro modo per ottenere i miei valori in questa frase di fusione. E se non c'è altro modo, come faccio a creare un tavolo temporaneo? – ollo
No, non hai bisogno di alcuna tabella temporanea ... Controlla questo link per unire syntax.http: //docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm – Teja