Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So geben Sie den Oracle-Cursor aus der gespeicherten Prozedur als Client-Datensatz mit Delphi und DBExpress zurück

Wie paulsm4 in this answer erwähnt , Delphi kümmert sich nicht darum, Parameterdeskriptoren für gespeicherte Prozeduren zu erhalten, sodass Sie dies selbst tun müssen. Um Parameter der gespeicherten Oracle-Prozedur aus einem Paket abzurufen, können Sie versuchen, GetProcedureParams -Methode, um die Liste mit Parameterdeskriptoren und mit den LoadParamListItems Prozedur mit dieser Liste Params füllen Sammlung. Im Code könnte es wie folgt aussehen.

Bitte beachten Sie, dass der folgende Code laut Dokumentation nur im Browser geschrieben wurde, also ungetestet ist. Und ja, über das Freigeben von ProcParams Variable, dies wird durch FreeProcParams erledigt Verfahren:

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;