FIREDAC返回多結果集code
之前使用ADO, 若是SQL返回的結果集有多個 能夠經過NextRecordset來依次獲取對象
代碼移植到FireDAC, 對於多結果集處理差很少, 可是仍是有一些不同的地方:blog
1.TDataSet自己是不支持多結果集的, 因此不要再這個上面浪費精力接口
2.切換到下一個結果集, ADO.NextRecordset 對應 FD.NextRecordSet內存
3.判斷是否有下一個結果集, ADO的方法是NextRecordset <> nil, 而FireDAC的NextRecordSet沒有返回值, 須要NextRecordSet之後判斷FD.Activeio
4.ADO.Recordset對應的是FD.Data, 可是, Recordset是一個接口, 手動增長引用計數之後釋放ADO對象仍然能夠訪問, 可是Data不行, FD對象釋放之後Data內容也就沒了, 雖然他也是一個接口, 可是實際數據仍是存放到FD對象裏的class
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;