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;