IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

À quoi sert ce IF dans la requête ?


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 19
    Points
    19
    Par défaut À quoi sert ce IF dans la requête ?
    Bonjour,

    J'aimerais savoir que fait exactement le IF, a quoi sert-il dans cette insertion ?
    et quelle sera la différence entre une insertion avec cette condition et une insertion sans ?

    Merci d'avance .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO Liste_b(IDB, TYPB, LIBB,VALB, IS_TYPE_OF)
    VALUES ('400','1','4,8% garantis 2M jusqu''à 200K (426)',500,'');
    
    IF sql%rowcount != 1 THEN
        ancre := 'Insertion Liste_b 400: ' || sql%rowcount;
        RAISE user_exception;  
    END IF;

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    La requête d'insertion s'arrête au point-virgule à la fin de la ligne commençant par VALUES.

    Le IF est un morceau de code qui suit la requête d'insertion mais ne l'empêche nullement, sauf si l'ensemble est dans un trigger ou une procédure et que le RAISE opère un ROLLBACK sur l'INSERT mais j'ai quand même des doutes !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Salut,

    Merci pour ta réponse. Je comprend mieux !
    Cela dit en éxécutant le Insert seulement, je reçoit le message suivant

    ORA-00001: unique constraint (EDGE_ADM.PK_liste_b) violated.

    saurais-tu pourquoi . sinon que dois-je faire pour ajouter mes données ?

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Le message signifie que la valeur que tu essaies d'entrer pour la clé primaire existe déjà.
    S'il s'agit d'une clé primaire de type entier auto-incrémenté, ne mets pas le nom de la colonne dans la requête et bien sûr ne donne pas non plus de valeur. Oracle s'en débrouillera tout seul et tu n'auras pas ce message.
    Par contre, si toutes les autres colonnes représentent une ligne déjà existante dans la table et s'il n'y a pas d'autre contrainte d'unicité, ça doublonnera la ligne existante.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gabi75 Voir le message
    Salut,

    Merci pour ta réponse. Je comprend mieux !
    Cela dit en éxécutant le Insert seulement, je reçoit le message suivant

    ORA-00001: unique constraint (EDGE_ADM.PK_liste_b) violated.

    saurais-tu pourquoi . sinon que dois-je faire pour ajouter mes données ?
    Violation de contrainte de la clef d'unicité EDGE_ADM.PK_liste_b...
    Ce n'est pas clair ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/12/2006, 10h41
  2. a quoi sert le id dans le champs submit
    Par lanfeust42 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 25/08/2006, 10h55
  3. A quoi sert le point dans le nom de la variable en URL
    Par ran_hery dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/07/2006, 12h38
  4. A quoi sert un ID dans un champ ?
    Par apt dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/04/2005, 08h58
  5. a quoi sert le schema dans postgres ??
    Par champion dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 13/09/2004, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo