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 03/02/2011, 23h43   #1
Membre du Club
 
Homme Rudy Lemaître
Développeur Java
Inscription : juin 2009
Messages : 126
Détails du profil
Informations personnelles :
Nom : Homme Rudy Lemaître
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Java
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2009
Messages : 126
Points : 49
Points : 49
Par défaut Procédure stockée avec transaction

Bonsoir à tous,
Si possible j'aurais besoin de conseil, en effet j'ai été voir différents site dont celui de mysql pour la mise en service d'une procédure stockée reprenant une transaction ainsi qu'un last insert id, je n'ai pas d'erreur de syntaxe comme je pense, mais quand je fait un test il ne m'inscrit rien dans la db.

c'est la première procédure stockée que je créée avec un transaction et je vous avous que je ne pense pas avoir tout compris au principe. je pense que mon erreur dois être toute bête mais je ne la trouve pas

si vous pourriez m'aider et surtout m'expliquer brièvement ou est mon erreur.

voici le code mysql de la procédure.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN
DECLARE id_telephone INT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;
 
START TRANSACTION;
	INSERT INTO TELEPHONE (PUBLIC_NUMBER, PRIVATE_NUMBER, FAX_NUMBER, GSM_NUMBER)
            VALUES (publicPhone,privatePhone,fax,gsm);
 
 SET id_telephone := LAST_INSERT_ID();
	INSERT INTO USERS (ID_SERVICE, ID_TYPE_USER, ID_TELEPHONE, LAST_NAME, FIRST_NAME, FONCTION, LOGIN, PASS)
            VALUES (id_service,id_type_user,id_telephone,last_name,first_name,fonction,login,AES_ENCRYPT(pwd,queryKey));
COMMIT;
 
END
Encore merci pour votre aide,
Mat.
mattrixx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 09h21   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Peut-être manque t-il le DELIMITER ?
Citation:
Envoyé par doc MySQL
L'exemple suivant est une procédure stockée simple, qui utilise un paramètre de sortie OUT. L'exemple utilise la commande delimiter du client mysql pour modifier le délimiteur de commande avant de définir la procédure. Cela permet au délimiteur ; d'être utilisé dans le corps de la procédure, plutôt que d'être interprété par le client mysql.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 13h43   #3
Membre du Club
 
Homme Rudy Lemaître
Développeur Java
Inscription : juin 2009
Messages : 126
Détails du profil
Informations personnelles :
Nom : Homme Rudy Lemaître
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Java
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2009
Messages : 126
Points : 49
Points : 49
Citation:
Envoyé par CinePhil Voir le message
Peut-être manque t-il le DELIMITER ?
sorry je n'avais pas tout copier coller.
voici ma procedure complete, j'ai encore fait des testes mais je ne comprend pas ou est le problème

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
-- ----------------------------
--  Procedure definition for `InsertUserAndPhoneTransaction`
-- ----------------------------
DROP PROCEDURE IF EXISTS `InsertUserAndPhoneTransaction`;
DELIMITER ;;
CREATE DEFINER=`rudy`@`%` PROCEDURE `InsertUserAndPhoneTransaction`(IN `publicPhone` varchar(50),IN `privatePhone` varchar(50),IN `fax` varchar(50),IN `gsm` varchar(50),IN `id_service` int,IN `id_type_user` int,IN `last_name` varchar(50),IN `first_name` varchar(50),IN `fonction` varchar(50),IN `login` varchar(50),IN `pwd` varchar(50),IN `queryKey` varchar(50))
BEGIN
DECLARE id_telephone INT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;
 
START TRANSACTION;
	INSERT INTO TELEPHONE (PUBLIC_NUMBER, PRIVATE_NUMBER, FAX_NUMBER, GSM_NUMBER)
            VALUES (publicPhone,privatePhone,fax,gsm);
 
 SET id_telephone := LAST_INSERT_ID();
	INSERT INTO USERS (ID_SERVICE, ID_TYPE_USER, ID_TELEPHONE, LAST_NAME, FIRST_NAME, FONCTION, LOGIN, PASS)
            VALUES (id_service,id_type_user,id_telephone,last_name,first_name,fonction,login,AES_ENCRYPT(pwd,queryKey));
COMMIT;
 
END
;;
a tu un idée ? je cherche encore ...
mattrixx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 13h51   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Je ne suis pas un pro des procédures SQL.
Tu as essayé un autre délimiteur, genre //, au cas où il se mélangerait les pinceaux entre le point-virgule simple de fin d'instruction et le double de délimiteur ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 14h28   #5
Membre du Club
 
Homme Rudy Lemaître
Développeur Java
Inscription : juin 2009
Messages : 126
Détails du profil
Informations personnelles :
Nom : Homme Rudy Lemaître
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Java
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2009
Messages : 126
Points : 49
Points : 49
Citation:
Envoyé par CinePhil Voir le message
Je ne suis pas un pro des procédures SQL.
Tu as essayé un autre délimiteur, genre //, au cas où il se mélangerait les pinceaux entre le point-virgule simple de fin d'instruction et le double de délimiteur ?
Je viens d'essayer mais il ne veux pas prendre les //

mais ma structure est bonne ? niveau sql ?

j'ai fait un teste et la requete me retourne

Time: 0.262ms

Affected rows: 0

en argument je lui passe ça :
'000','111','222','333','1','1','titeuf','fred','responsable','fff','bd','bd2010'

mais ça ne va pas

oula ça fait deux jours que je suis dessus lol
mattrixx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 12h28   #6
Membre du Club
 
Homme Rudy Lemaître
Développeur Java
Inscription : juin 2009
Messages : 126
Détails du profil
Informations personnelles :
Nom : Homme Rudy Lemaître
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Java
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2009
Messages : 126
Points : 49
Points : 49
Ok j'ai trouver

en réalité le champs avais une erreur orthographique

honte sur moi

merci pour l'aide quand même
mattrixx 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 08h09.


 
 
 
 
Partenaires

Hébergement Web