Page 1 sur 1

Problème procédure stockée mySQL

Posté : 26 nov. 2012, 10:13
par alexandre44
Bonjour, je cherche à tester mes connexions par une procédure stockée
DELIMITER |
CREATE PROCEDURE connexionValide( IN leLogin CHAR( 32 ) , IN leMdp CHAR( 32 ) , IN leType CHAR( 32 ) , OUT resultat BIGINT UNSIGNED )
BEGIN
SELECT  "SELECT count(*) FROM leType WHERE login='leLogin ' AND mdp='leMdp '" INTO resultat;
END
La requête seule marche, donc je reçoit 1, mais quand j'appelle ma procédure, j'obtiens 0.
CALL ('msmith','0000','professeur',@a);
SELECT @a;
Je ne sais pas pourquoi. Merci de votre aide.

Re: Problème procédure stockée mySQL

Posté : 26 nov. 2012, 14:14
par moogli
salut,


la tu sélectionne une chaîne de caractère dans un entier ça ne peux pas le faire

je ferait comme ça
CREATE PROCEDURE connexionValide(IN leLogin varchar( 32 ) , IN leMdp varchar( 32 ) , IN leType varchar( 32 ) , OUT resultat int )
BEGIN
	SELECT count(*) INTO resultat FROM utilisateur  WHERE login=leLogin AND mdp=leMdp;
END
et pour l'utiliser
set @a := null;
CALL connexionValide('moogli','test','utilisateur',@a);
SELECT @a;
(avec une table utilisateur bien sur ;) )
par contre la je ne pense pas que cela va fonctionner vue que "leType" risque de ne pas être interprété (pas testé les requêtes entièrement dynamique.

d'ailleurs est ce vraiment utile, tu a plusieurs tables d'utilisateurs ? (qui au final seront identique ?).


@+

Re: Problème procédure stockée mySQL

Posté : 27 nov. 2012, 16:17
par alexandre44
Bonjour,

après test cela marche bien merci.
Par contre je voudrais savoir, tu as mis
SET @a := NULL;

mais
:= 
signifie quoi ?

Et ma table étudiant et ma table professeur ne sont pas identique, c'est pas ça que j'ai un type.

Re: Problème procédure stockée mySQL

Posté : 27 nov. 2012, 16:38
par alexandre44
En fait après avoir enlevé le dur cela met
Table 'ppestage.letype' doesn't exist 
C'est de ça dont tu me parlé avec le type ?

Re: Problème procédure stockée mySQL

Posté : 27 nov. 2012, 21:00
par moogli
Pour la table oui, tu ne peux pas utiliser la variable ainsi.

Je ne sais pas si c'est possible (SQL dynamique, comme le "execute immediate" d'oracle).

Le := c'est l'opérateur d'affectation dans le code SQL de MySql.

Demande a Google : procédure stockée mysql, il y a des quelques tutos dont certain sur le site du zéro.


@+