Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 14h03   #1
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Par défaut Condition existentielle (IF EXISTS)

Bonjour, après avoir navigué sur le net je ne trouve pas la syntaxe correct en du code que je voudrai faire fonctionner
Code :
1
2
3
4
5
IF EXISTS SELECT champ FROM TABLE         
        Modifer   
      ELSE
        Créé      
end IF;
Quel qu'un peut m'aider?

Coordialement
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h09   #2
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

Pas sûr de savoir ce que tu veux faire, une explication avec des mots pourrait confirmer.

Que veux tu modifier ? La dite table ?
Que veux dire "IF EXISTS SELECT champ FROM TABLE" ? Si un champ de la table contient une valeur que tu veux tester ?
Que veux tu tester ? L'existence d'une ligne répondant à une certaine condition ?
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h19   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
regarde la commande MERGE
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/05/2011, 14h20   #4
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Je voudrais à partir d'informations provenant d'une première table modifier les enregistrements d'une seconde si ils existent déjà et les créer dans le cas contraire.
Si je ne suis pas assez claire n'hésitez pas à me le dire.
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h29   #5
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Dans ce cas, comme l'a dit OraFrance, c'est MERGE qu'il te faut

http://download.oracle.com/docs/cd/B...ments_9016.htm
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h32   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Citation:
regarde la commande MERGE
Bon si vous insistez de faire ça en PL/SQL par vous même alors :
Code :
1
2
3
4
5
 
  UPDATE TABLE SET col = valeur WHERE cle = valeur_cle;
  IF SQL%RowCount = 0 Then
    INSERT INTO TABLE (cle, col) VALUES (valeur_cle, valeur);
  End IF;
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 14h34   #7
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Je n'aime vraiment pas les explications en schéma et encore moins en anglais x)
Serait-il possible d'avoir un bout de code explicatif ?

Edit : j'ai répondu avant de voir ta réponse mnitu =)

À quoi correspond SQL%RowCount dans votre bout de code ?
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 15h58   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
ROWCOUNT retourne le nombre de lignes traitées par la commande précédente. Pour les exemples de MERGE, tu n'as qu'à lancer une recherche dans le forum où ça a été démontré à de nombreuses reprises
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 16h23   #9
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Effectivement, je vous remercie et vous félicite pour vos nombreuses réponses en peu de temps.
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h06.


 
 
 
 
Partenaires

Hébergement Web