Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/12/2012, 21h58   #1
loustalet
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 106
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 106
Points : 30
Points : 30
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.
loustalet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 09h11   #2
mnitu
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 4 104
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 104
Points : 8 000
Points : 8 000
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é.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/12/2012, 14h00   #3
loustalet
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 106
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 106
Points : 30
Points : 30
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
loustalet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 14h51   #4
mnitu
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 4 104
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 104
Points : 8 000
Points : 8 000
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.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/12/2012, 17h57   #5
loustalet
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 106
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 106
Points : 30
Points : 30
Super, merci pour ces explications.
Je corrige mon code.
Bon we
loustalet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h38.


 
 
 
 
Partenaires

Hébergement Web