当我创建保存的过程时,我可以创建一些变量是吗?例如:
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 into 语法允许您一次设置多个值,因此如果您需要从查询中获取多个值,您应该这样做,而不是为每个变量一次又一次地执行查询。
最后,如果您的查询返回的不是单行而是结果集,您可以使用游标。
以下 select 语句应该允许您保存 count(*) 的结果。
SELECT COUNT(*) FROM mytable INTO some_var;