6

我正在尝试在游标中的 mysql 工作台中使用准备好的语句。游标适用于非常大的数据集,因此会执行多次。每次执行步骤都会显示一个新结果。由于打开的结果窗口太多,这最终导致 mysql 工作台崩溃。

在光标中,我执行以下操作:

PREPARE stmt2 FROM @eveningQuery;
EXECUTE stmt2; 
DEALLOCATE PREPARE stmt2;

通常我使用类似的东西

set aVar = (EXECUTE stmt2); 

使查询静音,但 EXECUTE 不能那样工作。

有人知道如何在 mysql 中禁用 EXECUTE 命令的输出吗?

注意:我了解如何检索变量中的数据,但是我要防止它像这样显示在结果概述中在此处输入图像描述

当循环过多时,这将使 mysql-workbench 崩溃。

编辑,因为它被问到@eveningQuery 的一个例子。

SET @eveningQuery = CONCAT('select @resultNm := exists (select idSplitBill from tb_SplitDay where idSplitBill =', idSplitBillVar, ' and ', @columnNameEv ,' = 1 and softdelete = 0)');

idSplitBillVar = 来自光标的 id。@columnNameEv = 我正在可变填写的列。

我添加了这个信息是因为它被问到了,但是在我看来这并不重要,因为即使是最简单的查询,这个问题仍然存在。当你执行一个准备好的语句时,你会得到一个输出结果。我只想禁用这种行为。

4

1 回答 1

7

您使用的查询会创建新的结果集,并且 GUI 客户端会显示它(...很多次) -

SELECT @resultNm:=EXISTS(
  SELECT idSplitBill FROM tb_SplitDay
  WHERE idSplitBill =', idSplitBillVar, ' AND ', @columnNameEv ,' = 1 AND softdelete = 0
)

您可以重写此查询,并且不会创建结果集 -

SELECT EXISTS(
  SELECT idSplitBill FROM tb_SplitDay
  WHERE idSplitBill =', idSplitBillVar, ' AND ', @columnNameEv ,' = 1 AND softdelete = 0
)
INTO @resultNm
于 2013-03-12T08:13:13.607 回答