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 :

Gérer l'autocommit dans une procédure stockée


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut Gérer l'autocommit dans une procédure stockée
    Bonjour,

    je voudrai crée une procédure stockée qui supprime des données dans plusieurs tables, seulement je voudrais passer l'autocommit à faux au début de la procèdure puis faire un commit à la fin histoire que les suppressions ne soient pas pris en compte en cas de problème.

    Pouvez me dire comment je peux faire ça ?

    Pour le moment ma procédure ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create PROCEDURE PR_DEL
    (
      id      IN INTEGER
    )
    IS
    BEGIN
      DELETE FROM T_USER WHERE ID_USER=id;
      DELETE FROM T_GROUPE WHERE ID_USER=id;
      DELETE FROM T_NEWSLETTER WHERE ID_USER=id;
    END PR_DEL;
    merci

    PoichOU

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Quelle est la version d'Oracle utilisée ?

    Je ne connais pas d'option autocommit en PL/SQL mais il y a une option dans SQL*Plus et parfois une option qui dépend de l'API client (par exemple JDBC). Quelle est l'API en question ?

  3. #3
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    En effet, contrairement à Sybase, SQL-Server ou MySql, Oracle place par défaut tout les traitements dans une seule transaction, donc tant que le client ne fait pas commit, il n'y en aura pas et les données resteront consistantes.

  4. #4
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut
    La procédure stockée dépendrait de la version d'oracle ?
    présentement j'utilise Oracle9i Release 9.2.0.6.0, mais je voudrais faire une procédure qui ne dépend pas de la version.

    Et effectivement j'utilise l'api JDBC. D'habitude je gère l'autocommit avec java mais je voudrais savoir s'il est possible de le gérer directement dans ma procèdure stockée ?

    Merci

    PoichOU

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    La procédure stockée dépendrait de la version d'oracle ?
    2 versions majeures d'Oracle différentes ont toujours des fonctionnalités différentes, même pour le PL/SQL.

    D'habitude je gère l'autocommit avec java mais je voudrais savoir s'il est possible de le gérer directement dans ma procèdure stockée ?
    A ma connaissance ce n'est pas possible.

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    De toutes façons ça tombe bien parceque dans une procédure stockée, il n'y a pas d'auto-commit et c'est ce que tu veux.

    Si par exemple, une coupure réseau intervient pendant qu'un de tes delete tourne, un rollback général sera effectué sur toutes les tables.

  7. #7
    Membre éclairé Avatar de PoichOU
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2006
    Messages : 328
    Par défaut
    merci de vos réponses

    remi4444 : tu veux dire que si un problème arrive pendant l'execution de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM T_NEWSLETTER WHERE ID_USER=id;
    alors ma table T_USER et T_GROUPE ne seront pas vider ?


    L'instruction PRAGMA AUTONOMOUS_TRANSACTION ne sert pas à ce genre de chose ?

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Saisie de données dans une procédure stockée
    Par Hastaroth dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/10/2004, 09h54
  3. Vérification du type de données dans une procédure stockée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 11h20
  4. Marquer une pause dans une procédure stockée
    Par PéPénet dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/11/2003, 10h42
  5. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31

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