I'm evaluating ODAC and I've searched the forum for my problem's answer but I'v not found any:
I have a procedure in a big application that returns a TADODataSet but I'm on the way to change the TADOStoredProcedure with ODAC OraStoredProc to increase app performances and I hope to do that without changing the function prototype.
Well... I'm finding a way to exec a TOraStoredProc and copy data into a TADODataSet, like the TADOStoredProcedure Clone() function.
Let's try with an example:
now:
Code: Select all
procedure GetElencoIntercettazioni(ADODataSet: TAdoDataset; IdTarget: Integer; Modalita: string);
var
ADOStoredProc1: TADOStoredProc;
begin
ADOStoredProc1 := nil;
ADOStoredProc1 := TADOStoredProc.Create(nil);
ADOStoredProc1.Connection := ADOConnection1;
ADOStoredProc1.ProcedureName := 'GetElencoIntercettazioni';
ADOStoredProc1.Parameters.CreateParameter('p_id_target', ftInteger, pdInput, -1, IdTarget);
ADOStoredProc1.Parameters.CreateParameter('p_modalita', ftString, pdInput, 1, Modalita);
ADOStoredProc1.Open;
ADODataSet.Clone(ADOStoredProc1);
CleanTempStoredProc(ADOStoredProc1);
Code: Select all
procedure GetElencoIntercettazioni(ADODataSet: TAdoDataset; IdTarget: Integer; Modalita: string);
Var OraStoredProc1 : TOraStoredProc;
begin
OraStoredProc1 := TOraStoredProc.create(nil);
OraStoredProc1.StoredProcName := 'GetElencoIntercettazioni';
OraStoredProc1.Params.CreateParam(ftInteger, 'p_id_target', ptInput).AsInteger := target;
OraStoredProc1.Params.CreateParam(ftString, 'p_modalita', ptInput).AsString := 'F';
OraStoredProc1.Params.CreateParam(ftCursor, 'ref_rc', ptOutput);
OraStoredProc1.Prepare;
OraStoredProc1.ExecProc;
// and now???
Thanks in advance,
Matteo