Jeg vil gjerne SELECT en enkelt verdi inn i en variabel. Jeg har prøvd å følge:
DECLARE myvar INT(4);
-- returnerer umiddelbart en syntaksfeil.
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
-- returnerer et enkelt heltall
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
-- fungerer ikke, prøvde også @myvar
Er det mulig å bruke DECLARE utenfor lagrede prosedyrer eller funksjoner?
Kanskje jeg bare ikke skjønner konseptet med brukervariabler ... Jeg har nettopp prøvd:
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
...som fungerte akkurat som det skulle. Men hvis jeg kjører hver spørring om gangen, får jeg bare @var NULL.
Til slutt var en lagret prosedyre løsningen på problemet mitt. Her er hva som hjalp:
DELIMITER //
CREATE PROCEDURE test ()
BEGIN
DECLARE myvar DOUBLE;
SELECT somevalue INTO myvar FROM mytable WHERE uid=1;
SELECT myvar;
END
//
DELIMITER ;
call test ();
Du trenger ikke å DECLARE en variabel i MySQL. En variabels type bestemmes automatisk når den først tildeles en verdi. Typen kan være en av følgende: heltall, desimal, flytende tall, binær eller ikke-binær streng eller NULL-verdi. Se dokumentasjonen for brukerdefinerte variabler for mer informasjon:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
Du kan bruke SELECT ... INTO til å tilordne kolonner til en variabel:
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
Eksempel:
mysql> SELECT 1 INTO @var;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT @var;
+------+
| @var |
+------+
| 1 |
+------+
1 row in set (0.00 sec)