Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2007, 19h52   #1
Invité de passage
 
Inscription : juin 2006
Messages : 8
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : juin 2006
Messages : 8
Points : 2
Points : 2
Envoyer un message via MSN à toubal_99
Par défaut procédures stockées et transactions

Bonsoir
Voila je travail avec MySQL 5.0 je suis sous Delphi 7 et j’utilise ADO et j’aimerais bien utiliser des Procédures Stockées, et comme c’est la première fois pour moi que je v utiliser ce concept je me demande si une procédure stockée est Atomique ? Par exemple si cette procédure effectue des modifications sur plusieurs Tables es qu’elle sera exécutée en 1 seule bloque ou bien il faut Toujours utiliser les transactions ?

Ca c’est ma 1ere question la deuxième c’est de vous demander ou peut-on trouver un bon Tuto sur les procédures stockées (syntaxe, ext…) de préférence pour MySQL ou bien En SQL norme 2003 vus que ya pas grand-chose qui filtres sur ce point pour MySQL g l’impression que c’est Comme si c’était encor trop nouveau pour en parler .
Merci.
toubal_99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2007, 20h57   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Citation:
Envoyé par toubal_99
et j’aimerais bien utiliser des Procédures Stockées, et comme c’est la première fois pour moi que je v utiliser ce concept je me demande si une procédure stockée est Atomique ?
les proc stock ne sont pas particulièrement atomiques ; elles le deviennent si elles contiennent des transactions, ou sont contenues dans des transactions.

Citation:
Envoyé par toubal_99
Ca c’est ma 1ere question la deuxième c’est de vous demander ou peut-on trouver un bon Tuto sur les procédures stockées
Il existe d'excellents livres sur la question
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2007, 22h33   #3
Invité de passage
 
Inscription : juin 2006
Messages : 8
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : juin 2006
Messages : 8
Points : 2
Points : 2
Envoyer un message via MSN à toubal_99
Citation:
les proc stock ne sont pas particulièrement atomiques ; elles le deviennent si elles contiennent des transactions, ou sont contenues dans des transactions.
ca srais bien si vous pouvais me doner un exemple de PS qui contient une transaction, la syntaxe et comment gerer le Comit et le Rolback dans une PS
merci
toubal_99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2007, 22h38   #4
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Bah, il n'y a pas de syntaxe particulière aux procstocks. Voici un exemple avec deux gestionnaires d'erreur provoquant un ROLLBACK (il s'agit du retour d'un livre à une bibliothèque de prêt) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE PROCEDURE RetourLivre(IN paramIDlivre SMALLINT UNSIGNED, 
  OUT paramAmende DECIMAL(5,2) UNSIGNED)
BEGIN
DECLARE varIDlecteur SMALLINT UNSIGNED ;
DECLARE varRetourPrevuLe DATE ;
DECLARE EXIT HANDLER FOR 1329 -- warning pas de donnée trouvée 
  BEGIN 
    SELECT 'Ce n''est pas un livre en prêt.' AS Erreur ;
    ROLLBACK ;
  END ;
DECLARE EXIT HANDLER FOR 1172 -- erreur SELECT de plus d'une ligne
  BEGIN 
    SELECT 'Ce livre est prêté en double, corrigez et ré-essayez.' AS Erreur ;
    ROLLBACK ;
  END ;

START TRANSACTION ;
SELECT IDlecteur, RetourPrevuLe INTO varIDlecteur, varRetourPrevuLe
  FROM Prets
  WHERE IDlivre = paramIDlivre AND RetourEffectif IS NULL 
  FOR UPDATE ; -- réservation pour la saisie du retour
-- étape 1, l'amende
...
-- étape 2, le retour
...
COMMIT ;
END ;
Un danger se cache derrière l'utilisation de cette procédure avec une transaction ; en effet, la procédure stockée n'utilise pas un flux transactionnel différent, mais bien celui de l'utilisateur. Autrement dit, si l'utilisateur avait commencé une transaction, celle-ci sera implicitement validée par le Start Transaction en début de procédure.

Ce problème n'a pas de vraie solution ; on considère généralement que le client ou l'utilisateur ne doit pas appeler, lors d'une transaction, des procédures stockées dont il ne connaît pas les effets.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h33.


 
 
 
 
Partenaires

Hébergement Web