![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Hola a todos, estoy intentando hacer un BATCH para pasar un procesillo SQL pero a la hora de ejecutarlo me da error.
El proceso es el siguiente: Código:
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;
commit work;
execute procedure BORRA_DUPLICADOS;
commit work;
drop procedure BORRA_DUPLICADOS;
commit work;
Código:
cd c:\archivos de programa\interbase corp\interbase\bin isql [base de datos] -i [fichero sql] -u SYSDBA -p password Salu2 y gracias a todos desde ya ![]()
__________________
La ignorancia es la felicidad |
|
#2
|
||||
|
||||
|
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;
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#3
|
||||
|
||||
|
Muchas Gracias, ahora parece que funciona.
Me devuelve esta línea: Código:
Expected end of statement, encountered EOF Gracias ![]()
__________________
La ignorancia es la felicidad |
![]() |
|
|
|