原諒我的天真,但我對使用Delphi與數據庫(這可能看起來有些奇怪)是新手。如何返回存儲過程中的所有值?
我已經使用TADOConnection建立了與我的數據庫(MSSQL)的連接。我正在使用TADOStoredProc來訪問我的存儲過程。
我的存儲過程返回2列,一列填滿服務器名稱,第二列填滿服務器上的用戶。它通常返回大約70條記錄......不是很多數據。
如何以編程方式枚舉此存儲過程?我能夠在我的表單上放置一個DBGrid並將其附加到TDataSource(然後附加到我的ADOStoredProc),並且我可以驗證數據是否正確檢索。
理想情況下,我想枚舉返回的數據並將其移入TStringList。
目前,我使用下面的代碼來枚舉ADOStoredProc,但它只返回 '@RETURN_VALUE':
ADOStoredProc1.Open;
ADOStoredProc1.ExecProc;
ADOStoredProc1.Parameters.Refresh;
for i := 0 to AdoStoredProc1.Parameters.Count - 1 do
begin
Memo1.Lines.Add(AdoStoredProc1.Parameters.Items[i].Name);
Memo1.Lines.Add(AdoStoredProc1.Parameters.Items[i].Value);
end;
當代碼循環訪問Parameters集合時SP是否返回結果集是否重要?即這個代碼不會返回與OP相同的結果嗎? (免責聲明:我不是Delphi程序員,所以也許我誤解了這個問題......) – Matt 2009-05-29 23:44:09
當然很重要。 OP使用Open獲得結果集,然後使用ExecSQL丟棄結果集,不留任何循環。刪除ExecSQL並使用Open(或Active:= True)會留下結果集進行迭代。 IOW,這與OP的結果並不相同。 :-) – 2009-05-29 23:54:03