Oracle fusion des constantes dans un seul tableau

Dans Oracle, compte tenu d'un simple tableau de données:

create table data (
    id       VARCHAR2(255),
    key      VARCHAR2(255),
    value    VARCHAR2(511));

supposons que je veux "insérer ou mettre à jour" une valeur. J'ai quelque chose comme:

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

Est-il une meilleure façon de faire que cela? Cette commande semble avoir les inconvénients suivants:

  • Chaque littéral doit être tapé deux fois (ou ajouté deux fois par paramétrage)
  • L' "à l'aide de deux" la syntaxe semble hacky

Si c'est le meilleur moyen, est-il possible d'avoir à régler chaque paramètre deux fois dans JDBC?

  • Si vous êtes à l'aide de 10g, "DOUBLE" est encore moins d'un hack. avant que c'était une vraie table, dans 10g il ne l'est pas.
InformationsquelleAutor David Citron | 2008-10-03