Ao dar Execute em um client dataset que está chamando uma procedure em Oracle, que possui parâmetros tipo data, ocorre o erro Invalid Field Type.
Para resolver, você deve usar uma variável do tipo SQLTimeStamp para passar os parâmetros.
Adicione a unit SQLTimST no Uses;
Exemplo:
var
myTimeStamp: TSQLTimeStamp;
begin
cdsAuxGeral.Close;
cdsAuxGeral.CommandText :=
' begin ' +
' pkg_teste.RetornaVendasPeriodo(:p_DataHoraIni, :p_DataHoraFim, :lst);'+
' end; ';
cdsAuxGeral.Params.Clear;
cdsAuxGeral.Params.CreateParam(ftTimeStamp,'p_DataHoraIni', ptInput);
cdsAuxGeral.Params.CreateParam(ftTimeStamp,'p_DataHoraFim', ptInput);
cdsAuxGeral.Params.CreateParam(ftCursor,'Lst', ptOutput);
myTimeStamp := DateTimeToSQLTimeStamp(pPeriodoIni);
cdsAuxGeral.Params.ParamByName('p_DataHoraIni').AsSQLTimeStamp := myTimeStamp;
myTimeStamp := DateTimeToSQLTimeStamp(pPeriodoFim);
cdsAuxGeral.Params.ParamByName('p_DataHoraFim').AsSQLTimeStamp := myTimeStamp;
cdsAuxGeral.Execute;
Nenhum comentário:
Postar um comentário