创建保存的过程时,可以创建一些变量吗?例如:
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 into语法允许您一次设置多个值,因此,如果需要从查询中获取多个值,则应该这样做,而不是针对每个变量一次又一次地执行查询。
最后,如果您的查询返回的不是一个行而是一个结果集,则可以使用cursor。