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.
Vous devez vous connecter pour publier un commentaire.
Je ne considère pas l'utilisation de deux à un hack. Pour se débarrasser de liaison/de frappe deux fois, je ferais quelque chose comme:
Je me cachais la FUSION à l'intérieur d'un PL/SQL API et puis appelez via JDBC:
Comme une alternative à la FUSION, l'API pourrait faire:
Je préfère essayer la mise à jour avant de l'insérer à évitera d'avoir à vérifier pour une exception.
Même maintenant, nous avons l'instruction merge, j'ai toujours tendance à faire de rangée simple mise à jour de cette manière - semble juste plus d'un son plus naturel de la syntaxe. Bien sûr, de fusion c'est lorsque l'on traite avec les plus grands ensembles de données.
Utiliser une procédure stockée