【发布时间】: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