Hola, tienes que cambiar los terminadores de instrucción al crear el procedimiento almacenado. (Normalmente se suele usar el signo ^). Puesto que el cuerpo del procedimiento almacenado contiene signos de ;, que confunden la ejecución del script, pensando que la siguiente instrucción solo llega hasta ese símbolo.
Código:
set term ^ ;
create procedure BORRA_DUPLICADOS
as
declare variable empresa smallint;
declare variable almacen varchar(3);
declare variable fecha date;
declare variable articulo varchar(15);
declare variable tipo varchar (1);
declare variable aux smallint;
begin
for select count(*),empresa,almacen,fecha,articulo,tipo
from art_articulos_hist_precios
group by empresa,almacen,fecha,articulo,tipo
having count(*)>1
into :aux,:empresa,:almacen,:fecha,:articulo,:tipo
do begin
delete
from art_articulos_hist_precios
where empresa=:empresa and
almacen=:almacen and
articulo=:articulo and
tipo=:tipo ;
end
end
^
set term ; ^
commit work;
execute procedure BORRA_DUPLICADOS;
commit work;
drop procedure BORRA_DUPLICADOS;
commit work;
Saludos.