Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment renvoyer le curseur Oracle à partir d'une procédure stockée en tant qu'ensemble de données client à l'aide de Delphi et DBExpress

Comme paulsm4 l'a mentionné dans this answer , Delphi ne se soucie pas d'obtenir des descripteurs de paramètres de procédure stockée, et de sorte que vous devez le faire vous-même. Pour obtenir les paramètres de la procédure stockée Oracle à partir d'un package, vous pouvez essayer d'utiliser le GetProcedureParams méthode pour remplir la liste avec des descripteurs de paramètres et avec les LoadParamListItems procédure remplir avec cette liste Params le recueil. Dans le code, cela pourrait ressembler à ceci.

Veuillez noter que le code suivant a été écrit uniquement dans le navigateur conformément à la documentation, il n'a donc pas été testé. Et oui, à propos de la libération de ProcParams variable, cela est fait par le FreeProcParams procédure :

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;