FIREDAC返回多結果集
以前使用ADO, 如果SQL返回的結果集有多個 可以通過NextRecordset來依次獲取
代碼移植到FireDAC, 對於多結果集處理差不多, 但是還是有一些不一樣的地方:
1.TDataSet本身是不支持多結果集的, 所以不要再這個上面浪費精力
2.切換到下一個結果集, ADO.NextRecordset 對應 FD.NextRecordSet
3.判斷是否有下一個結果集, ADO的方法是NextRecordset <> nil, 而FireDAC的NextRecordSet沒有返回值, 需要NextRecordSet以后判斷FD.Active
4.ADO.Recordset對應的是FD.Data, 但是, Recordset是一個接口, 手動增加引用計數以后釋放ADO對象仍然可以訪問, 但是Data不行, FD對象釋放以后Data內容也就沒了, 雖然他也是一個接口, 但是實際數據還是存放到FD對象里的
5.FireDAC默認是不支持多結果集返回的, 需要手動設置 FetchOptions.AutoClose := False; 以后才可以
6.FireDAC如果你想吧得到的多結果集挨個取出來, 那么不能直接用臨時變量保存Data(Data是個接口), 需要用一個內存表去保存:
FDQuery1.Open; FDQuery1.FetchAll; FDMemTable1.Close; {一定要先close, 否則第二次設置其Data會報錯} FDMemTable1.Data := FDQuery1.Data; FDQuery1.NextRecordSet; if FDQuery1.Active then begin FDQuery1.FetchAll; FDMemTable2.Close; FDMemTable2.Data := FDQuery1.Data; end;