我想把一个单一的值选入一个变量。我尝试了以下方法。
DECLARE myvar INT(4);
-- 立即返回一些语法错误。
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
--返回一个单一的整数
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
-- 不起作用,也试过@myvar
是否可以在存储过程或函数之外使用DECLARE?
也许我只是不明白用户变量的概念......我刚刚试过。
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
...这就像它应该做的那样。但是,如果我一次运行每个查询,我只是得到@var NULL。
最后,一个存储过程解决了我的问题。这就是帮助。
DELIMITER //
CREATE PROCEDURE test ()
BEGIN
DECLARE myvar DOUBLE;
SELECT somevalue INTO myvar FROM mytable WHERE uid=1;
SELECT myvar;
END
//
DELIMITER ;
call test ();
你不需要在MySQL中声明一个变量。 变量的类型是在它第一次被赋值时自动确定的。 它的类型可以是:整数、十进制、浮点、二进制或非二进制字符串,或NULL值。 更多信息请参见用户定义的变量文档。
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
你可以使用SELECT ... INTO来为一个变量分配列。
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
例子。
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)