我有一个具有此签名的存储过程:
CREATE PROCEDURE SI_Inteligence(@dt datetime, @actions varchar(6), @FullData cursor varying out) 此过程返回一个打开的游标。
我需要什么类型的组件来捕获它并逐条记录地迭代它?它只是一个来自存储过程的参数!
procedure DoIt;
var sp: TADOStoredProc;
x: TADODataSet; //?
begin
sp := TADOStoredProc.Create(Self);
sp.Connection := myConnection; //TADOConnection Component
sp.ProcedureName := 'SI_Inteligence';
sp.Parameters.ParamByName('@dt').Value := date;
sp.Parameters.ParamByName('@actions').Value := 'something';
sp.ExecProc;//? Open doesn't return anything
x := TADODataSet.Create(Self);
//How load the cursor??
x.Assign(sp.Parameters.ParamByName('@FullData') as TADODataSet); //crash
end;现在我需要循环游标。我该怎么做呢?
发布于 2015-03-11 00:50:25
游标参数以记录集的形式返回,因此您可以使用与TDataSet类相关的TADOStoredProc方法(如Eof、Next、FieldByName等)遍历数据。
试试这段代码。
ADOStoredProc1.ExecProc;
while not ADOStoredProc1.Eof do
begin
//do something
//ADOStoredProc1.FieldByName('Foo').Value;
ADOStoredProc1.Next;
end;如果存储过程返回的不只是一个游标,则可以使用本post中所述的NextRecordset方法迭代记录集。
https://stackoverflow.com/questions/28968860
复制相似问题