delphi7寫的程序,在sql2000里沒問題,調用sql2008、2014里的存儲過程時,如果存儲過程里操作了大量數據,很容易會莫名其妙的自己撤銷掉,但是程序還識別不到,認為還在正常執行。今天嘗試換了個控件:TAdoStoredProc,專門調用存儲過程的,問題解決了,貼圖如下:
?
代碼:
//********************************************************************//
var AProc:TAdoStoredProc;
.................
AProc.ProcedureName:='PassMarkBill';
AProc.Parameters.CreateParameter('@RETURN_VALUE', ftInteger, pdReturnValue, 10, fgUnAssigned);
AProc.Parameters.CreateParameter('@sID', ftString, pdInput, 50, sID);
AProc.Parameters.CreateParameter('@sUser', ftString, pdInput, 50, sUserName);
AProc.Parameters.CreateParameter('@nRate', ftFloat, pdInput, 50, nAddinRate);
AProc.Parameters.CreateParameter('@lAllowNegative', ftBoolean, pdInput, 50, lAllowNegative);
AProc.Parameters.CreateParameter('@lUpdateLastDate', ftBoolean, pdInput, 50, lUpdateLastDate);
//執行
//rec:=connection.Execute(s); //******用最底層的連接執行沒問題********//
//if (assigned(rec)) and (not rec.EOF) then nR:=rec.Fields[0].Value;
AProc.ExecProc;
n:=int( AProc.Parameters.ParamValues['@RETURN_VALUE'] );
if n<>0 then raise exception.Create('審核出錯!返回值非零。'+floatToStr(n));
?
---------------------------------------------------------------------------------------------
ps:
? ? 上一次解決的辦法太麻煩,用的AdoConnection.execute,很難取返回值,這樣就省事了。
? ? 網址:http://www.cnblogs.com/HaiHong/p/haihong.html
? ? 標題:遇到個奇怪的問題,同時開啟本地和遠程兩個事務,遠程事務是sql2000沒問題,是sql2008的不報錯,但是寫不上數據。
?
海宏原創,轉載請注明。
?