2011-09-04 90 views
3

我在Delphi中使用ZeosLib来通过TZQuery对象调用MySQL存储过程。在MySQL完成存储过程的执行后,立即需要启动我的下一个代码块。Zeoslib:如何判断查询执行完成?

我在我的MySQL存储过程结尾添加了一条SELECT 1;语句。找出结果已被返回的最佳方法是什么?

回答

2

Zeos lib对于返回结果集的存储过程没有很好的效果。
它主动禁用返回的结果集。
有一个解决方法,您可以通过更改ZEOS源代码来激活结果集。

但是,当你这样做,你会得到很多错误,如MySQL has gone away
在不可预测的时间,这可能是他们为什么首先禁用此选项的原因。

最后,我采取的解决方法是将所需的任何结果集放入(临时)表中,并在存储过程完成后查询。这解决了错误,对我来说效果很好。

+0

这听起来很奇怪......我期望有两个主要原因:1)在MySQL 5.0 SP时本身并不稳定。 2)使用BLOB的结果可能导致“消失”。无论如何,我们(da-soft)已经很久没有看到这样的报告了。 –

+0

@ da-soft,我攻击了源,强制ZEOS lib允许存储过程返回结果集。这并不意味着我做得正确,或者没有其他代码依赖存储过程不返回结果集。我记得的问题是,存储过程已经返回一个结果集,指示存储过程成功或失败。任何其他的结果集都是额外的,这使ZEOS与之相混淆,假设返回的结果集**只会涉及成功或失败** – Johan

+0

正如我所记得的,诀窍是跳过结果集的完成状态。 .. –

相关问题