Oracle将常量合并为单表

前端之家收集整理的这篇文章主要介绍了Oracle将常量合并为单表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Oracle中,给出一个简单的数据表:
create table data (
    id       VARCHAR2(255),key      VARCHAR2(255),value    VARCHAR2(511));

假设我想“插入或更新”一个值。我有这样的东西:

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');

有没有比这更好的方法?这个命令似乎有以下缺点:

>每个文字需要输入两次(或通过参数设置添加两次)
>“使用双重”语法似乎是黑客

如果这是最好的方法,有没有办法在JDBC中设置每个参数两次?

我不认为使用双重身份是一个黑客。为了摆脱绑定/打字两次,我会做一些像:
merge into data
using (
    select
        'someid' id,'testKey' key,'someValue' value
    from
        dual
) val on (
    data.id=val.id
    and data.key=val.key
)
when matched then 
    update set data.value = val.value 
when not matched then 
    insert (id,value) values (val.id,val.key,val.value);

猜你在找的Oracle相关文章