sql >> Base de Datos >  >> RDS >> Oracle

Cómo devolver el cursor de Oracle desde el proceso almacenado como conjunto de datos del cliente usando Delphi y DBExpress

Como paulsm4 mencionó en this answer , a Delphi no le importa obtener descriptores de parámetros de procedimientos almacenados, por lo que debe hacerlo usted mismo. Para obtener parámetros del procedimiento almacenado de Oracle de un paquete, puede intentar usar el GetProcedureParams método para llenar la lista con descriptores de parámetros y con el LoadParamListItems procedimiento llenar con esa lista Params recopilación. En el código podría tener el siguiente aspecto.

Tenga en cuenta que el siguiente código se escribió solo en el navegador de acuerdo con la documentación, por lo que no se ha probado. Y sí, sobre liberar ProcParams variable, esto lo hace la FreeProcParams procedimiento:

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;