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 :

Différences execute immediate et commit


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Par défaut Différences execute immediate et commit
    Bonjour,
    Existe t'il des différences de performances entre ces deux solutions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete * from table; commit;
    execute immediate 'delete * from table';
    Merci.

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    Bonjour,

    A priori il n'y a aucune différence. execute immediate permet simplement d'exécuter une commande DDL ou DML dans un bloc pl/sql.
    Donc je dirais que les 2 sont identiques au niveau perf.

    voili, voilou
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Non, elles ne sont pas identiques puisque dans un cas tu commit dans l'autre non.

    NB : si tu delete toute ta table pourquoi ne pas faire un truncate table ?

  4. #4
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    Non, elles ne sont pas identiques puisque dans un cas tu commit dans l'autre non.
    Sauf erreur de ma part, la commande execute immediate fait un commit implicite.

    NB : si tu delete toute ta table pourquoi ne pas faire un truncate table ?
    C'est pas moi qui dirais le contraire
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  5. #5
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    non, je ne crois pas que le execute immédiate fasse un commit implicite...

    le fait est que le execute immediate est souvent employé dans du PL/SQL pour faire du DDL qui, LUI, fait du commit implicite !

    sinon, pour le truncate ce n'est pas toujours possible en fonction des contraintes sur la table.
    de plus le truncate est dangereux puisqu'il ne peux pas s'annuler avec un rollback... donc oublie le truncate dans une PL/SQL où tu souhaite gèrer l'intégralité d'une transaction.
    Et enfin, pire que tout, le truncate est une opération DDL, et donc va COMMITER les opérations précédentes, que tu le veuille ou non !!!!

  6. #6
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    le fait est que le execute immediate est souvent employé dans du PL/SQL pour faire du DDL qui, LUI, fait du commit implicite !
    Merci pour cette précision, j'ai appris un truc là !
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  7. #7
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par Yorglaa
    sinon, pour le truncate ce n'est pas toujours possible en fonction des contraintes sur la table.
    de plus le truncate est dangereux puisqu'il ne peux pas s'annuler avec un rollback... donc oublie le truncate dans une PL/SQL où tu souhaite gèrer l'intégralité d'une transaction.
    Et enfin, pire que tout, le truncate est une opération DDL, et donc va COMMITER les opérations précédentes, que tu le veuille ou non !!!!
    De manière générale je suis d'accord avec toi, mais comme on ne sait pas pourquoi ni comment pegase06 utilise son delete, le truncate peut-être une solution intéressante, d'autant plus qu'il fait un commit juste après son delete. C'est pourquoi je posais la question.

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

Discussions similaires

  1. EXECUTE IMMEDIATE commit
    Par zdig10 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 11/04/2010, 15h56
  2. Réponses: 10
    Dernier message: 30/10/2006, 14h44
  3. Equivalents de EXECUTE IMMEDIATE ... RETURNING INTO ... ?
    Par swirtel dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/05/2005, 10h21
  4. [pl/sql] execute immediate
    Par Nadine dans le forum Oracle
    Réponses: 16
    Dernier message: 23/02/2005, 17h37
  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