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

Oracle Discussion :

[Forms 6i] Update -> Pas de sortie en Exception


Sujet :

Oracle

  1. #1
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut [Forms 6i] Update -> Pas de sortie en Exception
    Bonjour

    sous Forms, je gère une partie dans un BLOCK non basé, et fait donc un UPDATE à la main, sauf que l'UPDATE ne sort pas en exception même si la jointure qu'il contient n'existe pas, donc impossible de savoir si la mise à jour a eu lieu ou pas

    Comment faire pour savoir ce qu'a fait le UPDATE :

    Merci

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut Re: [Forms 6i] Update -> Pas de sortie en Exception
    Citation Envoyé par macben
    Bonjour

    sous Forms, je gère une partie dans un BLOCK non basé, et fait donc un UPDATE à la main, sauf que l'UPDATE ne sort pas en exception même si la jointure qu'il contient n'existe pas, donc impossible de savoir si la mise à jour a eu lieu ou pas

    Comment faire pour savoir ce qu'a fait le UPDATE :

    Merci
    Il faudrait être plus clair !
    "l'UPDATE ne sort pas en exception même si la jointure qu'il contient n'existe pas" ?
    Une exception est levée lorsqu'une erreur est rencontrée. Le fait qu'aucune ligne ne soit mise à jour suite à un Update ne constitue pas une erreur.
    Verifiez l'attribut SQL%ROWCOUNT après l'update, il vous dira combien de lignes ont été mises à jour.

  3. #3
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut Re: [Forms 6i] Update -> Pas de sortie en Exception
    Citation Envoyé par SheikYerbouti
    Il faudrait être plus clair !
    "l'UPDATE ne sort pas en exception même si la jointure qu'il contient n'existe pas" ?
    Si l'UPDATE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE maTable SET col1 = val1 WHERE col = val
    alors qu'aucune ligne ne correspond à la jointure col = val.

    Mais je vais donc examiner le nombre de lignes modifiées.

    Merci.

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Un UPDATE qui ne modifie aucune ligne ne sort pas en exception NO_DATA_FOUND ou autre.
    Tu as raison, il te faut vérifier le SQL%ROWCOUNT

  5. #5
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    Soit mon update :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE maTable SET col1 = val1 where col = val
    Or pour col = val, col1 est déjà égale à val1, l'UPDATE fait quand même la maj et me ramène SQL%ROWCOUNT = 1, normal, mais y'a-t-il un moyen simple de savoir/déterminer si la ligne mise à jour est/était déjà à jour :

    Merci

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    et pourquoi pas ajouter :


  7. #7
    Membre averti Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Points : 433
    Points
    433
    Par défaut
    Citation Envoyé par Fred_D
    et pourquoi pas ajouter :

    Parce que là je n'aurai plus moyen de savoir si le SQL%ROWCOUNT est à 0 parce que la ligne est déjà à jour ou parce qu'elle n'existe pas

    Ps : d'ailleurs j'ai essayé d'utiliser SQL%ROWCOUNT dans Forms mais je n'arrive pas à trouver la bonne syntaxe pour récupérer sa valeur

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    et un trigger ?

  9. #9
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    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
      1  Begin
      2    update emp_test set ename = 'Zogotounga' where empno = 10  ;
      3    dbms_output.put_line( 'Nbre de lignes mise a jour -> ' || SQL%ROWCOUNT ) ;
      4    update emp_test set ename = 'Zogotounga' where empno > 10  ;
      5    dbms_output.put_line( 'Nbre de lignes mise a jour -> ' || SQL%ROWCOUNT ) ;
      6* End ;
    SQL> /
    Nbre de lignes mise a jour -> 0
    Nbre de lignes mise a jour -> 14
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> rollback;
     
    Annulation (ROLLBACK) effectuée.

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par macben
    Parce que là je n'aurai plus moyen de savoir si le SQL%ROWCOUNT est à 0 parce que la ligne est déjà à jour ou parce qu'elle n'existe pas

    Ps : d'ailleurs j'ai essayé d'utiliser SQL%ROWCOUNT dans Forms mais je n'arrive pas à trouver la bonne syntaxe pour récupérer sa valeur
    Si tu veux gérer les 2 cas différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT count(*) INTO v_nb 
    FROM maTable 
    WHERE col = val AND ROWNUM = 1;
     
    IF v_nb = 0
    THEN 
     message('Pas d'enreg'); 
    ELSE
     UPDATE maTable 
     SET col1 = val1 
     WHERE col = val AND col1 <> val1;
     message('nb enreg updatés : ' || SQL%ROWCOUNT);
    END IF;

  11. #11
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    SELECT ... FOR UPDATE dans ce cas : cela améliorera les perfs

  12. #12
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Fred_D
    SELECT ... FOR UPDATE dans ce cas : cela améliorera les perfs
    Pourquoi ? (j'aime bien savoir)
    Je croyais que le FOR UPDATE lockait les enreg.

  13. #13
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    oui, mais surtout il réserve l'enregistrement et l'update le retrouve immédiatement

  14. #14
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Oki, dans ce cas ne pas mettre le ROWNUM =1 !!

  15. #15
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    certes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [forms 6i]UPDATE IMPOSSIBLE
    Par pjcejbpojo dans le forum Forms
    Réponses: 5
    Dernier message: 06/05/2006, 14h09
  2. Problème Requête UPDATE (ou pas)
    Par mastasushi dans le forum Access
    Réponses: 7
    Dernier message: 03/05/2006, 08h42
  3. Réponses: 7
    Dernier message: 24/01/2006, 11h03
  4. this.form.submit ne marche pas ... et pourtant
    Par misarod dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 21/12/2005, 17h40
  5. [forms] pre-update
    Par plaineR dans le forum Forms
    Réponses: 20
    Dernier message: 15/09/2004, 16h09

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