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 :

Transaction et programmation


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut Transaction et programmation
    Bonjour,

    Je suis en train d'écrire une application en C# qui gère des inscriptions à des congrès.
    Tous les ordres insert sont dans des procédures stockées incluses dans des packages.
    Il y a des procédures publiques et privées dans ce package.
    J'ai donc dans mon applicatif une classe qui contient une Oracleconnection, et une méthode chargée de créer une commande et valoriser les paramètres à partir des champs saisis. Cette méthode appelle ensuite une procédure d'un package Oracle. Cette procédure fait appel à d'autres procédures pour insérer dans différentes tables.
    Ma question est de savoir si il vaut mieux commencer et terminer ma transaction dans le code la méthode de ma classe C# avec un objet OracleTransaction, ou bien commencer (implicitement) ma transaction et la terminer dans la procédure stockée appelée depuis mon code C#.

    J'opterais pour la deuxième solution, mais je ne suis aps certain !
    Merci pour vos lumières.

  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
    La procédure appelée ne doit pas terminer la transaction c'est-à-dire ne pas faire ni commit ni rollback. La responsabilité de la transaction incombe à celui qui l’appelé.

  3. #3
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut
    Merci pour la réponse, j'en déduis donc que c'est à mon applicatif c# de commencer et terminer la transaction?
    Avez-vous une explication à me fournir ? je pensais que la transaction incombait au sgbd
    Merci

  4. #4
    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
    Une procédure est appelée pour faire son job. Cette procédure ne sait strictement rien sur les frontières de la transaction qui a été initiée avant son appel. De plus elle ne sait strictement rien non plus sur ce qui convient de faire en cas d’une exception inattendue, elle sait seulement gérer une exception inévitable ou regrettable. C’est seulement l’appelant de la procédure qui sait quand la transaction a commencé, quand elle se finit et ce qu’il convient de faire en cas d’échec de la procédure appelée.

    Parfois les programmeurs pensent que certaines procédures sont en top et qu’elles définissent les transactions et y ajoutent la gestion des erreurs inattendues et la gestion de la transaction. Mais, souvent, y compris ces procédures sont assemblées dans des transactions plus générales qui automatisent des workflows plus complexes.

  5. #5
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut
    Super, merci pour ces explications.
    Je corrige mon code.
    Bon we

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/11/2010, 20h31
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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