Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Nouveau Membre du Club
    Inscrit en
    janvier 2010
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 132
    Points : 39
    Points
    39

    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 Confirmé Sénior Avatar de mnitu
    Homme Profil pro Marius Nitu
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    4 479
    Détails du profil
    Informations personnelles :
    Nom : Homme Marius Nitu
    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 : 4 479
    Points : 8 909
    Points
    8 909

    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
    Nouveau Membre du Club
    Inscrit en
    janvier 2010
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 132
    Points : 39
    Points
    39

    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 Confirmé Sénior Avatar de mnitu
    Homme Profil pro Marius Nitu
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    4 479
    Détails du profil
    Informations personnelles :
    Nom : Homme Marius Nitu
    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 : 4 479
    Points : 8 909
    Points
    8 909

    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
    Nouveau Membre du Club
    Inscrit en
    janvier 2010
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 132
    Points : 39
    Points
    39

    Par défaut

    Super, merci pour ces explications.
    Je corrige mon code.
    Bon we

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •