En Oracle, dada una sencilla tabla de datos:Oracle mezclar constantes en una sola mesa
create table data (
id VARCHAR2(255),
key VARCHAR2(255),
value VARCHAR2(511));
Supongamos que quiero "insertar o actualizar" un valor. Tengo algo como:
merge into data using dual on
(id='someid' and key='testKey')
when matched then
update set value = 'someValue'
when not matched then
insert (id, key, value) values ('someid', 'testKey', 'someValue');
¿Hay una mejor manera que esto? Este comando parece tener los siguientes inconvenientes:
- las necesidades de cada literales a ser escrito dos veces (o añadido dos veces a través de parametrización)
- El "usando dual" sintaxis parece hacky
Si esto es la mejor manera, ¿hay alguna forma de tener que establecer cada parámetro dos veces en JDBC?
Si está utilizando 10g, "DUAL" es incluso menos pirata. antes de eso era una mesa real, en 10g no lo es. –