Problème procédure stockée mySQL

alexandre44
Invité n'ayant pas de compte PHPfrance

26 nov. 2012, 10:13

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 nov. 2012, 14:14

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 ?).


@+
Il en faut peu pour être heureux ......

alexandre44
Invité n'ayant pas de compte PHPfrance

27 nov. 2012, 16:17

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.

alexandre44
Invité n'ayant pas de compte PHPfrance

27 nov. 2012, 16:38

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 ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 nov. 2012, 21:00

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.


@+
Il en faut peu pour être heureux ......