我有以下代碼來執行返回多個結果集的SQL存儲過程,然後從流中讀取此結果。對於背景信息:它將xml塊作爲字符串返回,然後將其轉換爲完整的xml。 它運行良好一年,但現在我有一個情況,導致錯誤消息:操作取消。調試器顯示:項目x引發異常類EOleException,消息操作已取消。 我不知道是什麼原因導致它。任何幫助或建議都會很棒。在德爾福ADO錯誤'操作取消'
const
adExecuteStream = $00000400; //Indicates that the results of a command execution should be returned as a stream.
var
objCmd, InputStream, XML, XSLT, Template, Processor, objConn, strmResults : Variant;
ATStreamClass : TMemoryStream;
Adapt : TStreamAdapter;
OutputStream: IStream;
objCmd := CreateOLEObject('ADODB.Command');
objCmd.ActiveConnection := dmABaasMock.dbRaAndm.ConnectionObject;
objCmd.CommandType := adCmdText;
objCmd.CommandText := <sp proc name with params>;
strmResults := CreateOLEObject('ADODB.Stream');
strmResults.Open;
objCmd.Properties['Output Stream'] := strmResults;
objCmd.Execute(EmptyParam, EmptyParam, adExecuteStream); // HERE COMES THE EXCEPTION
strmResults.Position := 0;
xmlMemo.text := strmResults.ReadText;
事情是,它仍然適用於其他人,它是一個用戶和數據的單一情況。我在存儲過程中遇到了很大的問題,超時,但在這種情況下,也沒有太多數據。所以,沒有什麼改變,從Management Studio執行時存儲的proc工作正常,我不得不在某些時候重寫代碼,但沒有其他任何幫助,但這仍然可以在99.99%的時間內運行。 – Tamm 2010-09-13 09:58:58
@Tamm。 「一個用戶和數據的單個案例...」您可以將用戶和數據分開以查看它是否與數據或用戶(或計算機)相關聯。這將有助於瞭解它是否與此數據庫或某個用戶的設置相關聯。 – 2010-09-13 17:20:12
所以,它沒有鏈接到用戶。我在自己的電腦上運行它,結果如下:EOleException,操作已取消。 Delphi的ComObj單元中的DispCallError過程引發了該錯誤。所以它一定是數據相關的問題?我沒有簡單的方法將數據分成更小的部分進行調查,更不可能。 – Tamm 2010-09-13 18:08:46