3
我在Delphi中使用ZeosLib來通過TZQuery對象調用MySQL存儲過程。在MySQL完成存儲過程的執行後,立即需要啓動我的下一個代碼塊。Zeoslib:如何判斷查詢執行完成?
我在我的MySQL存儲過程結尾添加了一條SELECT 1;
語句。找出結果已被返回的最佳方法是什麼?
我在Delphi中使用ZeosLib來通過TZQuery對象調用MySQL存儲過程。在MySQL完成存儲過程的執行後,立即需要啓動我的下一個代碼塊。Zeoslib:如何判斷查詢執行完成?
我在我的MySQL存儲過程結尾添加了一條SELECT 1;
語句。找出結果已被返回的最佳方法是什麼?
Zeos lib對於返回結果集的存儲過程沒有很好的效果。
它主動禁用返回的結果集。
有一個解決方法,您可以通過更改ZEOS源代碼來激活結果集。
但是,當你這樣做,你會得到很多錯誤,如MySQL has gone away
。
在不可預測的時間,這可能是他們爲什麼首先禁用此選項的原因。
最後,我採取的解決方法是將所需的任何結果集放入(臨時)表中,並在存儲過程完成後查詢。這解決了錯誤,對我來說效果很好。
這聽起來很奇怪......我期望有兩個主要原因:1)在MySQL 5.0 SP時本身並不穩定。 2)使用BLOB的結果可能導致「消失」。無論如何,我們(da-soft)已經很久沒有看到這樣的報告了。 –
@ da-soft,我攻擊了源,強制ZEOS lib允許存儲過程返回結果集。這並不意味着我做得正確,或者沒有其他代碼依賴存儲過程不返回結果集。我記得的問題是,存儲過程已經返回一個結果集,指示存儲過程成功或失敗。任何其他的結果集都是額外的,這使ZEOS與之相混淆,假設返回的結果集**只會涉及成功或失敗** – Johan
正如我所記得的,訣竅是跳過結果集的完成狀態。 .. –