Ami me pasaba lo mismo, yo hice un procedimiento en la Base de Datos Firebird que son muy similares y cuando le intentaba enviar la fecha me mandaba un error a consecuencia de ello, lo que hice fue en lugar de enviar un campo tipo date enviaba un dato tipo char(10) despúes en el procedimiento hacia lo conversión. Hice algo como esto
Procedimiento
Código:
create procedure actualiza(fecha char(10),
nombre varchar(15),
apellidos varchar(20),
edad integer)
as
declare variable FECH date;
begin
FECH = :fecha;
insert into tabla(fecha_tbl, nombre_tbl, apellidos_tbl)
values(:fecha, :nombre, :apellidos);
end
y en delphi hago algo como esto:
Código Delphi
[-]
var
Inserta: TQuery;
begin
Inserta := TQuery.Create(nil);
try
with Inserta do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM actualiza(:FECHA, :NOMBRE, :APELLIDOS)');
ParamByName('FECHA').asString := DateToStr(FormatDateTime('dd"/"mm"/"aaaa', StrToDate(Edit1.Text)));
ParamByName('NOMBRE').asString := Edit2.Text;
ParamByName('APELLIDOS').asString := Edit3.Text;
Open;
end;
finally
Inserta.Free;
end;
end;
Como te daras cuenta, envío el formato que ya se que es el que maneja la BD, eso crea dependencia a que el formato que maneja la BD nunca cambie pero me sirve por el momento hasta encontrar una solución.
También dejo la conversión del valor tipo char que envío al procedimiento para que la asigne a una varable y haga las conversiones pertinentes.
Espero te serva de algo esto... nos vemos.