Oracle
 sql >> Database >  >> RDS >> Oracle

Come restituire Oracle Cursor da stored proc come Client Dataset utilizzando Delphi e DBExpress

Come menzionato da paulsm4 in this answer , Delphi non si preoccupa di ottenere descrittori di parametri di stored procedure e quindi devi farlo da solo. Per ottenere i parametri della stored procedure Oracle da un pacchetto, puoi provare a utilizzare GetProcedureParams metodo per riempire l'elenco con descrittori di parametri e con LoadParamListItems procedura riempire con quell'elenco Params collezione. Nel codice potrebbe apparire come segue.

Tieni presente che il codice seguente è stato scritto solo nel browser in base alla documentazione, quindi non è stato testato. E sì, sulla liberazione di ProcParams variabile, questo viene fatto da FreeProcParams procedura:

var
  ProcParams: TList;
  StoredProc: TSQLStoredProc;
  ...
begin
  ...
  StoredProc.PackageName := 'KP_DATASNAPTEST';
  StoredProc.StoredProcName := 'GetFaxData';
  ProcParams := TList.Create;
  try
    GetProcedureParams('GetFaxData', 'KP_DATASNAPTEST', ProcParams);
    LoadParamListItems(StoredProc.Params, ProcParams);
    StoredProc.ParamByName('abbr').AsString := 'ZZZTOP';
    StoredProc.Open;
  finally
    FreeProcParams(ProcParams);
  end;
  ...
end;