如何压制mysql存储过程输出?

时间:2015-02-03 13:40:18

标签: mysql

所以如果我有一个包含的存储过程选择如何抑制这些选择的结果出现?

例如,如果我有

create procedure xyz
begin    
    select * from table_name #I don't want this to be seen in the console.    
    do other stuff     
end;

3 个答案:

答案 0 :(得分:9)

您可以将所需的参数设置为

之类的变量

SET @foo =(SELECT foo_coloumn FROM foo_table);

这将取消选择结果集。

答案 1 :(得分:2)

由于结果集是多行的,因此接受的答案对我不起作用。不过我确实想出了一个解决方案:

CREATE TEMPORARY TABLE silence_output SELECT * FROM foo;
DROP TEMPORARY TABLE silence_output;

这可以避免将结果集转储到随后被删除的表中可能遇到的任何多行/多列问题。希望这有助于其他人。您可以将临时表命名为任何名称。

答案 2 :(得分:0)

我一直在努力寻找一种方法来抑制存储过程中的多行输出,同时用“ FOR UPDATE”锁定所有适用的行。

第一次尝试是带有“ LIMIT”子句的“ SELECT ... INTO”,但这只会锁定1行。

使用GROUP_CONCAT为我解决了此问题:

SELECT GROUP_CONCAT(column) INTO @variable 
FROM table 
WHERE column = value
FOR UPDATE

在事务中这样做会锁定所有受影响的行,防止插入,并抑制输出。