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

SQL Oracle Discussion :

Oracle 8i Execute immediate


Sujet :

SQL Oracle

  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut Oracle 8i Execute immediate
    Bonjour, j'utilise actuellement des execute immediate pour faire des insertions et des updates. Le problème, c'est que je voudrais faire une insertion si le update a échoué, mais je ne vois pas comment détecter que la 1ère requête à réussi ou pas...
    J'utilise oracle 8i.

    Merci d'avance pour vos suggestions, et si ce n'est tout simplement pas possible...

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    regardez la clause EXCEPTION du PL/SQL !

    Nota : En 10g, il y a MERGE...

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par LeoAnderson Voir le message
    regardez la clause EXCEPTION du PL/SQL !

    Nota : En 10g, il y a MERGE...
    Non : Pas d'exception (Genre NO_DATA_FOUND) pour un update
    Tester plutôt SQL%ROWCOUNT=0

    Et MERGE marche en 9i

  4. #4
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Citation Envoyé par McM Voir le message
    Non : Pas d'exception (Genre NO_DATA_FOUND) pour un update
    Tester plutôt SQL%ROWCOUNT=0

    Et MERGE marche en 9i
    ça dépend de ce qu'il entend par "a échoué"
    pour moi, ça veut dire que ça a retourné une erreur... si par contre ça veut dire "aucune ligne mise à jour", effectivement, pas d'exceptions

    et oui, désolé pour le merge en 9i

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    ou une contrainte unique et un update dans l'exception si l'insert viole la contrainte

  6. #6
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Citation Envoyé par orafrance Voir le message
    ou une contrainte unique et un update dans l'exception si l'insert viole la contrainte
    Oui c'est ce que j'ai fait, je suis parti sur des recherches sur le Exception après la réponse de Léo, et c'est ce qui m'est venu à l'esprit (ca m'a permis de voir qu'il manquait une contrainte... ).

    Mais ca serait peut etre plus optimisé (?) de faire avec SQL%ROWCOUNT, car on fait généralement plus d'update que d'insert(dans mon cas tout du moins), et dans le cas actuel, je commence donc d'abord par tester l'insert, pour faire un update s'il a échoué.

    Merci pour vos réponses en tout cas.

Discussions similaires

  1. EXECUTE IMMEDIATE et Compilation sous Oracle Sql Developer
    Par abdelhamidem dans le forum PL/SQL
    Réponses: 3
    Dernier message: 16/09/2008, 17h01
  2. EXECUTE IMMEDIATE + Oracle 8
    Par davy.g dans le forum SQL
    Réponses: 23
    Dernier message: 13/09/2007, 16h05
  3. [Oracle 9iR2][PL/SQL] EXECUTE IMMEDIATE USING
    Par mainecoon dans le forum Oracle
    Réponses: 4
    Dernier message: 08/02/2007, 19h08
  4. [oracle 8.1.7] pbm de privilège avec execute immediate
    Par Nounoursonne dans le forum Oracle
    Réponses: 4
    Dernier message: 10/02/2006, 16h45
  5. Execute immediate et nom reserves
    Par nuke_y dans le forum Oracle
    Réponses: 3
    Dernier message: 22/11/2004, 18h17

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