Oracle - update or insert

Résolu/Fermé
camilla - 4 avril 2012 à 13:21
 camilla - 5 avril 2012 à 17:43
Bonjour,
depuis Oracle SQL Developper , je veux insérer une ligne dans une table si elle n'existe pas, sinon je fais juste un update sur la ligne. Voila la requête que j'ai utilisé :

UPDATE TABLE SET ATTRIBUT1= 'valeur', ATTRIBUT2 = 'valeur', ATTRIBUT3 = 'valeur'
WHERE IDTABLE = 'valeur'
IF SQL%ROWCOUNT=0 INSERT INTO TABLE (IDTABLE , ATTRIBUT1, ATTRIBUT2, ATTRIBUT3)
VALUES ('valeur', 'valeur', 'valeur', 'valeur')

Quand j'execute cette reqeuête ça me donne une erreur Commande inconnue

4 réponses

Bonjour Heremion,

Merci de m'avoir répondu. En effet j'ai essayé avec cette syntaxe mais j'ai deux erreurs : nom de table invalide et l'autre commande inconnue !!

voila j'ai corrigé ma requête après a réponse et voila exactement ce que j'ai mis :

UPDATE TABLE PERSONNE SET NOM= 'nom', PRENOM= 'prenom' WHERE IDPERSONNE= '01'
IF SQL%ROWCOUNT = 0 THEN INSERT INTO TABLE PERSONNE VALUES ('01', 'nom', 'prenom');
1
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
101
4 avril 2012 à 13:26
Bonjour Camilla,

Pour reprendre ta requête :

UPDATE TABLE ta_table SET ATTRIBUT1= 'valeur', ATTRIBUT2 = 'valeur', ATTRIBUT3 = 'valeur'
WHERE IDTABLE = 'valeur' ;
IF SQL%ROWCOUNT=0 THEN INSERT INTO TABLE ta_table (IDTABLE , ATTRIBUT1, ATTRIBUT2, ATTRIBUT3)
VALUES ('valeur', 'valeur', 'valeur', 'valeur') ;
0
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
101
4 avril 2012 à 14:08
Attention, deux points importants à noter :

1) si IDPERSONNE est bien un identifiant, le test serait plutôt IDPERSONNE = 1 sinon bizarre de mettre un varchar en PK mais admettons.
2) Tout bloc IF qui débute doit se terminer par un END IF ;
0
Bonjour,

J'ai enfin réglé le problème, il fallait ajouter un BEGIN au début de la requête et un END; à la fin .

Merci bcp pour ton aide
0