Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como retornar o Oracle Cursor do proc armazenado como Client Dataset usando Delphi e DBExpress


Como paulsm4 mencionado em this answer , o Delphi não se preocupa em obter descritores de parâmetros de procedimentos armazenados, e assim você precisa fazer isso sozinho. Para obter parâmetros do procedimento armazenado Oracle de um pacote, você pode tentar usar o GetProcedureParams método para preencher a lista com descritores de parâmetros e com o LoadParamListItems procedimento preencha com essa lista Params coleção. No código, pode parecer a seguir.

Observe que o código a seguir foi escrito apenas no navegador de acordo com a documentação, portanto, não foi testado. E sim, sobre liberar ProcParams variável, isso é feito pelo FreeProcParams procedimento:
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;