【问题标题】:How can you disable result output for the mysql EXECUTE command in workbench如何在工作台中禁用 mysql EXECUTE 命令的结果输出
【发布时间】:2013-02-23 09:00:33
【问题描述】:

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

在光标中我做这样的事情:

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

通常我使用像

这样的东西
set aVar = (EXECUTE stmt2); 

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

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

注意:我了解如何检索变量中的数据,但我想防止它显示在结果概览中,如下所示

这会导致 mysql-workbench 在循环过多时崩溃。

edit 因为它被问到@eveningQuery 的示例。

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

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

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

【问题讨论】:

  • 只是吹毛求疵,但您的意思是“存储过程”而不是“光标”吗?
  • 感谢您的评论。它是在存储过程中定义的游标,但我认为这不会对问题产生太大影响。
  • 你能展示@eveningQuery quaery 的例子吗?
  • 我添加了一个查询示例,但这并不重要,因为它也发生在一个简单的选择中
  • 这很重要。查询可能会创建结果集,您可以尝试避免它。

标签: mysql mysql-workbench prepared-statement database-cursor


【解决方案1】:

您使用的查询会创建新的结果集,并且 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

【讨论】:

  • 好的,这似乎可以解决问题,我认为我的查询语法特定于准备好的语句,但正如您所建议的那样,事实并非如此。感谢您的回答,这将使我的生活更轻松。 (PS 我会尽快奖励赏金。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2019-10-13
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多