variable dans procédure stockée toujours NULL [RESOLU][MYSQL] - SQL/NoSQL - Programmation
Marsh Posté le 17-04-2008 à 09:03:16
je ne fais pas de mysql, mais tu as essayé de mettre ta variable commande_internet du même type que celui de la colonne?
et de nouveau je ne sais pas si ca existe ou pas en mysql mais en oracle tu aurais pu attribuer le type en faisant commandes_temporaires.commande_internet%TYPE, ce qui est plutot pas mal.
Marsh Posté le 17-04-2008 à 09:45:12
Bonjour,
le problème n'est pas lié à ma variable commande_internet spécifiquement, mais à toutes mes variables.
J'ai déjà essayé de déclarer celle-ci en bool, int(1), tinyint(1) sans aucune différence. En fait à la création elle est déclarée en bool, mais le script que phpmyadmin me renvoit pour la sauvegarde de la structure la déclare en tinyint(1) (d'où la différence de type dans les extraits que j'ai mis), ce qui ne doit pas jouer sur le fonctionnement en interne, je pense que MYSQL gère un bool comme un int de taille 1, d'où la transformation en tinyint par phpmyadmin.
De toute façon je l'ai aussi "court-circuitée" en la remplaçant par une valeur en "dur" dans la requête d'insertion, et alors l'erreur passe à la variable suivante où une valeur NULL est interdite.
Le fait est que toutes mes variables semble avoir la valeur NULL dans ma requête d'insertion alors qu'il me semble avoir repris exactement la syntaxe de INSERT ... INTO ... FROM
Certains exemples rajoutent un SELECT simple avec les variables à la suite, hors lorsque j'ai essayé ceci, MYSQL m'a répondu qu'une procédure ne peut rien retourner comme valeur (SELECT = RETURN ? )
Marsh Posté le 17-04-2008 à 20:46:43
Pour ceux à qui ça arriverai, mettre les champs entre `` permet de bien les différencier des variables du même nom...
Cependant il s'avère que dans un select, stocké les résultats des champs dans des variables du même nom que les champs ne marche pas. Utiliser des alias pour les champs ne suffit pas, il faut impérativement que les variables aient des noms différents de ceux des champs.
Voilà ce qui arrive quand on manque de rigueur et qu'on fait tout ce qu'on peut pour user et abuser du copier/coller
Marsh Posté le 18-04-2008 à 10:12:25
j'y avais pensé mais je ne sais plus pourquoi je ne l'avais pas posté
perso je préfixe toutes mes entrées d'une certaine manière, et toutes mes variables d'une autre, ca permet de ne pas laisser d'ambiguité, et aussi pour la lisibilité tu visualises plus vite ce que tu fais.
Marsh Posté le 16-04-2008 à 22:31:16
Bonjour,
j'ai un problème avec une procédure stockée sous MYSQL
J'ai une table dans laquelle je stocke des données temporairement (pas une table temporaire), puis lorsque je veux valider mes données, je veux lancer une procédure stockée qui copie les données de ma première table vers une autre en y ajoutant quelques infos supplémentaire lors de cette validation.
Je passe donc en paramètre l'id de mon enregistrement à copier à ma procédure stockée qui enregistre ses champs dans des variables, variables que j'utilise dans une requète d'insertion dans l'autre table.
Hors j'ai des champs qui refusent la valeur NULL, et malgré qu'aucun de mes champs ne soient nuls, lors de l'exécution de ma procédure, je reçoit l'erreur suivante :
Mon SELECT qui remplit les variables ne me renvoi aucune valeur NULL lorsque je l'exécute directement.
Voici à quoi ressemble tout ce petit monde :
table d'arrivée :
et la procédure :
et enfin l'appel :
Il semblerait que ma requete SELECT ne remplisse pas les variables, pourtant je ne voit pas où est la différence avec les docs et autres exemples que j'ai pu trouver sur le net.
Quelqu'un saurait-il où est mon erreur ?
Merci
Message édité par uncle buzz le 17-04-2008 à 20:47:15