直接用ADODataSet执行存储过程 begin call xxx; end; 然后得到返回结果集。
The following code cycles through the datasets returned by a stored procedure.var TempDataSet: TCustomSQLDataSet; nRows: Integer; begin TempDataSet := SQLStoredProc1; // start with 1st record set while TempDataSet <> nil do begin TempDataSet.First; while not TempDataSet.Eof do begin // process each record TempDataSet.Next; end; if TempDataSet <> SQLStoredProc1 then // don抰 free the original! TempDataSet.Free; TempDataSet = SQLStoredProc1.NextRecordSet; // get next set end; end;
存储过程或是数据集的NextRecordSet才是关键var TempDataSet: TCustomSQLDataSet; nRows: Integer; begin TempDataSet := SQLStoredProc1; // start with 1st record set while TempDataSet <> nil do begin TempDataSet.First; while not TempDataSet.Eof do begin // process each record TempDataSet.Next; end; if TempDataSet <> SQLStoredProc1 then // don抰 free the original! TempDataSet.Free; TempDataSet := SQLStoredProc1.NextRecordSet; // get next set end; end;
begin
call xxx;
end;
然后得到返回结果集。
TempDataSet: TCustomSQLDataSet;
nRows: Integer;
begin
TempDataSet := SQLStoredProc1; // start with 1st record set
while TempDataSet <> nil do
begin
TempDataSet.First;
while not TempDataSet.Eof do
begin
// process each record
TempDataSet.Next;
end;
if TempDataSet <> SQLStoredProc1 then // don抰 free the original!
TempDataSet.Free; TempDataSet = SQLStoredProc1.NextRecordSet; // get next set
end;
end;
TempDataSet: TCustomSQLDataSet;
nRows: Integer;
begin
TempDataSet := SQLStoredProc1; // start with 1st record set
while TempDataSet <> nil do
begin
TempDataSet.First;
while not TempDataSet.Eof do
begin
// process each record
TempDataSet.Next;
end;
if TempDataSet <> SQLStoredProc1 then // don抰 free the original!
TempDataSet.Free; TempDataSet := SQLStoredProc1.NextRecordSet; // get next set
end;
end;