当我创建保存的过程中,我可以创造一些变量是吗? 例如:
CREATE PROCEDURE `some_proc` ()
BEGIN
DECLARE some_var INT;
SET some_var = 3;
....
问:但如何从查询中设置变量的结果,那就是如何做一些这样的:
DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;
?
当我创建保存的过程中,我可以创造一些变量是吗? 例如:
CREATE PROCEDURE `some_proc` ()
BEGIN
DECLARE some_var INT;
SET some_var = 3;
....
问:但如何从查询中设置变量的结果,那就是如何做一些这样的:
DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;
?
有多种方法可以做到这一点。
您可以使用子查询:
SET some_var = (SELECT COUNT(*) FROM mytable);
(喜欢你原来,只需添加括号周围的查询)
或使用SELECT INTO语法以分配多个值:
SELECT COUNT(*), MAX(col)
INTO some_var, some_other_var
FROM tab;
子查询语法稍微快一些(我不知道为什么),但只能分配一个值。 到选择语法允许您一次设置多个值,所以如果你需要从查询中抓取多个值,你应该做的,而不是针对每个变量连连执行查询。
最后,如果您的查询返回不单行,但一个结果,你可以使用光标 。
下面的SELECT语句应该让您保存从COUNT(*)的结果。
SELECT COUNT(*) FROM mytable INTO some_var;