Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils 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 31/01/2008, 18h59   #1
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Par défaut Passer un paramètre à une query

Bonjour,

Je viens de réinstaller mysql.
Jusqu'à présent pour passer un paramètre à une query j'utilisait la syntaxe :
Code :
SET @monparam=:monparam;
depuis la réinstallation mysql me renvois une erreur sur les :.
Je suppose que c'est un paramétrage de mysql mais je ne trouve rien à ce sujet.
merci de votre aide.

Bonne soirée

MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 23h50   #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
je pense que c'est plutôt une erreur de syntaxe :
Code :
set @monparam:=monparam;
Par ailleurs, le terme exact est "variable utilisateur" et non "paramètre".
__________________
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 01/02/2008, 07h26   #3
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Bonjour,
non il ne s'agit pas d'une erreur de syntaxe.
J'ai aussi tout un tas de query du type

Code :
SELECT * FROM client WHERE nom=:nom
qui ne fonctionnent plus non plus.

Il ne s'agit pas réellement d'une variable de saisie, mais de paramètres que je passe à l'execution à partir d'une appli.L'appli utilise Dac for mysql et dans ce cas je n'ai pas de problèmes, Dac s'occupant de "reparser". Mais jusqu'à présent j'utilisait ems mysql manager pour tester mes query, et là ca pose un problème.
Ce problème de syntaxe apparait aussi lorsque j'utilise mysql query browser.

Cela fait des années que j'utilise cette syntaxe sans problèmes.
Je vais réessayer d'installer mysql si je n'ai pas d'autre choix.

Merci de votre aide
MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 07h28   #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
Avec un SET, ce n'est pas =: mais := (égal d'affectation). Dans un WHERE, c'est = tout court (égal de comparaison).
__________________
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 01/02/2008, 18h32   #5
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
bonsoir,

dans un where c'est effectivement = s'il s'agit d'une constante.
Pour le reste cela à toujours fonctionné comme cela et si je fais par exemple
Citation:
set @nom:=nom;
select * from clients where nom=@nom;
j'obtiens comme réponse Unknown column 'nom' in 'field list'
la requete sur mon ancienne installation
Citation:
set @nom=:nom;
select * from clients where nom=@nom;
fonctionnait très bien et fonctionne toujours sur d'autres instal alors que j'obtiens maintenant
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':nom' at line 1

Cordialement

MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 18h46   #6
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Bonsoir,
jamais utilisé les variables dans MySQL, mais c'est marrant.

Code :
1
2
SET @one=1, @two=2;
SELECT @three:=@one+@two;
Code :
1
2
SELECT @nom:=`titre` FROM `operations` WHERE `id` = 1;
SELECT * FROM `operations` WHERE `titre` = @nom;
Code :
1
2
SET @annee=2007, @mois=12;
SELECT * FROM `operations` WHERE YEAR(`moment`) = @annee AND MONTH(`moment`) = @mois;
Code :
1
2
SET @valeur='ccaoc';
SELECT * FROM `operations` WHERE `valeur` = @valeur;
Cordialement,
DaRiaN.

PS: c'est juste pour tester et voir si tout le monde a pareil (MySQL 5.0.27). Oui, je sais, je devrais peut-être mettre à jour ma version de MySQL.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 19h11   #7
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Bonsoir,
j'utilise la version 5.1.22.

Ces requêtes fonctionnent aussi chez moi. Mais mon problème est que je veux avoir le nom paramètrable depuis l'extérieur de la query.
En fait mes query sont stockées dans une table et appelées par programme au moment ou l'utilisateur saisit des données.
J'ai réinstallé mysql mais sans résultats

Bonne soirée
MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 19h16   #8
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Comment MySQL peut savoir que vous voulez prendre le champ `nom` de la table inconnue. Enfin, je ne comprends rien et je ne suis pas vraiment là pour aider car je n'ai jamais utilisé les variables sous MySQL. Excusez-moi du dérangement... je vais télécharger la dernière version de MySQL.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 19h30   #9
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
non ma table n'est pas inconnue j'ai une requete du type
Citation:
set @nom=:nom;
select * from clients where nomdefamille=@nom;
ou
Citation:
select * from clients where nomdefamille=:nom;

Par programme je passe le paramètre @nom par ex 'DUPONT'

Bonne Soirée
MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 22h06   #10
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
Une variable utilisateur peut contenir une valeur, mais pas un nom de colonne ou de table. Si tu veux des noms de colonne ou de table variables, il faut que tu passes par des prepared statements (RTFM sur PREPARE et EXECUTE).
__________________
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 02/02/2008, 05h34   #11
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Il ne s'agit pas d'un nom de colonne, mais de la valeur de la colonne, dans l'exemple, la table s'appelle `clients` et la colonne `nomdefamille`.

Bon WE
MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2008, 06h37   #12
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
J'ai compris mon problème.
J'utilise EMS Mysql Manager. pour obtenir le résultat que je recjherche il faut cocher dans les options 'allow using of parameters in query text'.Je supose que c'est EMS Mysql Manager qui s'occupe ensuite de parser.

Merci de votre aide.

Bon WE
MS
MarcS 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 18h27.


 
 
 
 
Partenaires

Hébergement Web