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 28/12/2011, 14h22   #1
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 203
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 203
Points : 38
Points : 38
Par défaut Erreur 1292 à l'exécution d'une procedure stockée

Bonjour,
J'ai la procédure stockée suivante

Code :
1
2
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_desactivateDataByObservation`(IN variableID varchar(6), IN lower datetime, IN upper datetime)
begin SET @inputID=variableID ; SET @inputLower=lower ; SET @inputUpper=upper ; SET @mySQl=Concat('UPDATE mask set ',@inputID,' =false where observation between '',@inputLower,'' and '',@inputUpper,''');prepare stmt FROM @mySQL ; execute stmt ; deallocate prepare stmt ; END
Quand je l'exécute avec les paramètres ci-dessous
Code :
call dbexplore.sp_desactivateDataByObservation('var001','2007-10-01 00:00:01','2007-10-01 06:02:52')
j'obtiens l'erreur suivante:
Citation:
Error Code: 1292. Incorrect datetime value: ',@inputLower,' for column 'observation' at row 1
Pourtant quand j'exécute la requête équivalente, elle fonctionne bien. Est ce que quelqu'un peut me dire quel est le problème dans cette procédure stockée?
Merci pour votre aide
pbatty1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 19h15   #2
Membre Expert
 
Avatar de kain_tn
 
Homme
Inscription : mars 2005
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations forums :
Inscription : mars 2005
Messages : 577
Points : 1 209
Points : 1 209
Déjà pour commencer tu pourrais formater un peu ta requête parce que là c'est franchement peu lisible et il y a des erreurs avec des guillemets non échappés...

Ensuite, je ne comprends pas bien pourquoi tu concatène toutes tes variables si c'est pour faire une requête préparée. Essaye plutôt:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_desactivateDataByObservation`(
    IN variableID varchar(6), 
    IN lower datetime, 
    IN upper datetime
)
begin 
    SET @inputID=variableID; 
    SET @inputLower=lower; 
    SET @inputUpper=upper; 
 
    SET @myRequest = Concat('UPDATE mask SET ', @inputID, '=false WHERE observation BETWEEN ? AND ?');
 
    PREPARE stmt FROM @myRequest;
    EXECUTE stmt USING @inputLower, @inputUpper; 
    DEALLOCATE PREPARE stmt; 
END
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


Code C :
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(int argc, char **argv) {
 
    printf("So long, and thanks for the fish, Dennis...\n");
    return 0;
}
kain_tn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 19h18   #3
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 203
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 203
Points : 38
Points : 38
Merci pour avoir montrer que l'exécution du statement peut être associée à des paramètres.
pbatty1 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 02h14.


 
 
 
 
Partenaires

Hébergement Web