sábado, 18 de dezembro de 2010

Delphi - chamando procedure com parâmetro tipo data: errro Invalid Field Type

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: