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 :

Ignorer Expression No_data_found


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Ignorer Expression No_data_found
    Bonjour,
    Je travaille actuellement à passer des triggers RPGLE DB2 vers PL/SQL DB2, et j'étudie la portabilité de PL/SQL DB2 vers PL/SQL Oracle.
    J'ai un problème sur le point suivant.
    Il arrive souvent que dans mon trigger, je doive faire des requetes sur d'autres tables, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT QHAUTE, QPROFO, QLARGE INTO :NEW.QHAUTE, :NEW.QPROFO, 
    :NEW.QLARGE FROM GENA20P0 WHERE CENVIR = :NEW.ICONTE AND     
    CCONTE = :NEW.CCONTE;
    En DB2, si je trouve un enreg, c'est bien, si je n'en trouve pas je m'en contrefout. (Ici les champs :NEW.QHAUTE, :NEW.QPROFO,
    :NEW.QLARGE ne seront pas rempli epicétou !!)
    Mais en Oracle j'ai l'exception NO_DATA_FOUND qui se lève.
    Je souhaiterais eviter que cette exception ne se lève.
    Certains proposeront de faire un count(*) avant la requête => Ca fonctionne.
    D'autres proposeront de gérer l'exception du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EXCEPTION
    WHEN NO_DATA_FOUND THEN 
    wtest := true; 
    END;
    => Ca fonctionne.
    Le problème de ces deux solutions est que il faut recherche l'ensemble des requetes des triggers et les modifier une à une.
    Appliquer cela à plusieurs centaines de triggers (de quelques centaines de lignes) cela donne un boulot monstrueux.
    Or dans mon contexte le temps = argent.
    Y aurait il un moyen de "désactiver" cette exception, par exemple en début de trigger de maniere à pouvoir faire une traduction de PL/SQL DB2 vers PL/SQL Oracle plus automatique?
    Ps : j'ai déjà réussi à presque automatiser la trad, mais cette exception m’embête un peu.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Non aucun moyen il faut modifier le code. Il faut soit ajouter systématiquement le traitement de l'exception NO_DATA_FOUND soit transformer les
    dans des structures utilisant des curseurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Open cursor
    Fetch cursor 
    Close cursor
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For rec in (select ...) Loop
      :new.zone := rec.zone;
    End Loop;
    Ca peut s'automatiser peut être mais dans tous les cases il faut envisager une révision du code.

Discussions similaires

  1. ignorer les expression regulieres ds un variable
    Par rootdaoud dans le forum Langage
    Réponses: 3
    Dernier message: 22/01/2006, 16h07
  2. Réponses: 2
    Dernier message: 16/05/2003, 10h14
  3. [langage] expression reguliere motif répétitif dans 1 pattern
    Par comme de bien entendu dans le forum Langage
    Réponses: 11
    Dernier message: 09/04/2003, 16h14
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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