Bonjour à tous,

J'ai une tache assez simple à faire, mais je ne vois pas quel est le moyen le plus simple et efficace d'y arriver.

C'est tout simple :

- J'ai une table T1 sur laquelle je fais des UPDATE en fonction d'un ID.
- Sauf que cette table ne contient pas forcément de ligne avec L'ID correspondant.
- Si la ligne n'existe pas, je voudrais faire plutôt un INSERT.

- Tout cela sans utiliser de procédure stockée. Uniquement en une requête SQL

Je suis sous Oracle 9i release 2

Et j'ai trouvé une fonction qui pourrait faire l'affaire : MERGE, dont la syntaxe est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
MERGE INTO <table/view>
USING <table/view/subquery> ON (condition)
 
--update
 
WHEN MATCHED THEN
UPDATE SET column = (value/expr),..
WHERE (condition) | DELETE WHERE (condition)
 
--insert
 
WHEN NOT MATCHED THEN
INSERT (column,..) VALUES (value/expr,..)
WHERE (condition)
 
--error log
Mon souci est que cette fonction prend en compte 2 tables, et fait une comparaison entre les deux, dans le but de faire une sorte de synchro entre les deux.

Mais dans mon cas je n'ai qu'une seule table, sur laquelle je voudrais faire :

if(select ID FROM T1) then
UPDATE
else
INSERT
end if

Mais sans procédure stockée...

Est ce possible ?

Merci