Je voudrais SELECTIONNER une seule valeur dans une variable. J'avais essayé de suivre:
DECLARE myvar INT(4);
- renvoie immédiatement une erreur de syntaxe.
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
- renvoie un seul entier
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
- ne fonctionne pas, a également essayé @myvar
Est-il possible d'utiliser DECLARE en dehors des procédures ou fonctions stockées?
Peut-être que je ne comprends tout simplement pas le concept de variables utilisateur ... J'ai juste essayé:
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
... qui a fonctionné comme prévu. Mais si j'exécute chaque requête à la fois, j'obtiens simplement @var NULL.
la source
En fin de compte, une procédure stockée était la solution à mon problème. Voici ce qui a aidé:
la source
Ces réponses ne couvrent pas très bien MULTIPLES variables.
L'affectation en ligne dans une procédure stockée entraîne également le renvoi de ces résultats dans l'ensemble de résultats. Cela peut être déroutant. Pour utiliser la syntaxe SELECT ... INTO avec plusieurs variables, procédez comme suit:
Le SELECT ne doit renvoyer qu'une seule ligne, d'où LIMIT 1, bien que ce ne soit pas toujours nécessaire.
la source
Vous pouvez également utiliser SET au lieu de DECLARE
la source
Selon les documents MySQL, DECLARE ne fonctionne qu'au début d'un bloc BEGIN ... END comme dans un programme stocké.
la source
syntax error, missing ;
erreur pour moi.Vous n'avez pas besoin de DÉCLARER une variable dans MySQL. Le type d'une variable est déterminé automatiquement lors de la première affectation d'une valeur. Son type peut être l'un des suivants: entier, décimal, virgule flottante, chaîne binaire ou non binaire ou valeur NULL. Consultez la documentation sur les variables définies par l'utilisateur pour plus d'informations:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
Vous pouvez utiliser SELECT ... INTO pour affecter des colonnes à une variable:
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
Exemple:
la source
Il est à noter que malgré le fait que vous pouvez
SELECT INTO
des variables globales comme:SELECT ... INTO @XYZ ...
Vous ne pouvez PAS utiliser de
FETCH INTO
variables globales comme:FETCH ... INTO @XYZ
On dirait que ce n'est pas un bug . J'espère que cela sera utile à quelqu'un ...
la source
J'utilise la version 6 (MySQL Workbench Community (GPL) pour Windows version 6.0.9 révision 11421 build 1170) sur Windows Vista. Je n'ai aucun problème avec les options suivantes. Ils l'ont probablement réglé puisque ces gars-là ont eu les problèmes il y a trois ans.
Toutes les options ci-dessus me donnent un résultat correct.
la source
Pour ceux qui rencontrent de tels problèmes en ce moment, essayez simplement de mettre un alias pour la table, cela devrait être l'astuce, par exemple:
Cela a fonctionné pour moi.
À votre santé.
la source
Vous manquez peut-être le symbole @ avant votre valeur, comme ça
select 'test' INTO @myValue
;la source
SELECT c1, c2, c3, ... INTO @ v1, @ v2, @ v3, ... FROM nom_table WHERE condition;
la source