Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2004
Avatar de Triton
Triton Triton is offline
Miembro
 
Registrado: nov 2003
Ubicación: Murcia
Posts: 37
Poder: 0
Triton Va por buen camino
Unhappy Problemas con Script SQL y la herramienta ISQL

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;
A continuación os pongo la lína de comando que va en el BATCH

Código:
cd c:\archivos de programa\interbase corp\interbase\bin
isql [base de datos] -i [fichero sql] -u SYSDBA -p password
Mi duda es si el SCRIPT que he creado funciona (es decir, su estructura en si). Ya que los pasos de este fichero por separado desde IBExpert fuciona correctamente.

Salu2 y gracias a todos desde ya
__________________
La ignorancia es la felicidad
Responder Con Cita
  #2  
Antiguo 14-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 14-06-2004
Avatar de Triton
Triton Triton is offline
Miembro
 
Registrado: nov 2003
Ubicación: Murcia
Posts: 37
Poder: 0
Triton Va por buen camino
Thumbs up Gracias

Muchas Gracias, ahora parece que funciona.

Me devuelve esta línea:

Código:
Expected end of statement, encountered EOF
¿Se podría cambiar este mensaje por otro?. De todas maneras no me es prioritario, simplemente por curiosidad.

Gracias
__________________
La ignorancia es la felicidad
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:24:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi