Jer*_*upé 6 mysql cursor prepared-statement mysql-workbench
我正在尝试在游标中的mysql workbench中使用预准备语句.光标在一个非常大的数据集上工作,因此它被执行多次.每次为EXECUTE步骤显示新结果时.由于太多的打开结果窗口,最终导致mysql工作台崩溃.
在游标中我做这样的事情:
PREPARE stmt2 FROM @eveningQuery;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
Run Code Online (Sandbox Code Playgroud)
通常我会使用像
set aVar = (EXECUTE stmt2);
Run Code Online (Sandbox Code Playgroud)
沉默查询但EXECUTE不能那样工作.
有谁知道如何在mysql中禁用EXECUTE命令的输出?
注意:我理解如何在变量中检索数据,但是我想要防止的是它在结果概述中显示如下
当循环太多时,这将使mysql-workbench崩溃.
编辑因为它被问到了一个@eveningQuery的例子.
SET @eveningQuery = CONCAT('select @resultNm:= exists(从tb_SplitDay中选择idSplitBill,其中idSplitBill =',idSplitBillVar,'和',@ columnNameEv,'= 1和softdelete = 0)');
idSplitBillVar =来自光标的id.@columnNameEv =我正在填写的一个列.
我添加了这个信息,因为它被问到,但是在我看来这并不重要,因为即使是最简单的查询问题仍然存在.执行预准备语句时,您将获得输出结果.我只想禁用此行为.
您使用的查询创建新的结果集,GUI客户端显示它(...多次) -
SELECT @resultNm:=EXISTS(
SELECT idSplitBill FROM tb_SplitDay
WHERE idSplitBill =', idSplitBillVar, ' AND ', @columnNameEv ,' = 1 AND softdelete = 0
)
Run Code Online (Sandbox Code Playgroud)
您可以重写此查询,并且不会创建结果集 -
SELECT EXISTS(
SELECT idSplitBill FROM tb_SplitDay
WHERE idSplitBill =', idSplitBillVar, ' AND ', @columnNameEv ,' = 1 AND softdelete = 0
)
INTO @resultNm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4061 次 |
| 最近记录: |