我有一个使用带有SELECT语句的循环的过程,但该语句实际上只是设置一个变量。这意味着有很多东西被展示出来,我不需要看到它,它充斥着我的终端。
这是我的意思的一个例子,虽然这实际上并不是我正在运行的(因为那是公司信息):
DROP PROCEDURE IF EXISTS test;
DELIMITER #
CREATE PROCEDURE test()
BEGIN
SET @key:=1;
testloop: REPEAT
SELECT
@dummyString := stringField
FROM
aTable;
SET @dummyStringAll :=CONCAT(@dummyStringAll,$dummyString);
SET @key := @key + 1;
UNTIL @key>10
END REPEAT testloop;
END #
DELIMITER ;
是否可以运行SELECT(无论是否在过程内)并且不显示SELECT查询的结果?也许这不是世界上最重要的事情,但它会有所帮助。
答案 0 :(得分:1)
如果存储过程未存储在变量中,则它将返回查询结果集。
如何知道您将结果存储在变量中?
不在查询中使用变量,而是在查询中使用SELECT value INTO <variable>
语法。见:13.2.9.1 SELECT ... INTO Syntax
来自常见问题:
1)MySQL 5.6存储例程能否返回结果集?
存储过程可以,但存储的函数不能。如果在存储过程中执行普通SELECT,则结果集将直接返回给客户端。
所以,使用&#39; SELECT ... INTO ...&#39;语法将阻止该过程从查询返回结果集。