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 01-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
FIrebird: Eliminar tablas segun un patron

Haber si alguien me puede ayudar con este sql:
Quiero borrar todas tablas segun un padron. Por ejemplo, todas las que empizen por 'DIA_'.
He probado varias cosa, como por ejemplo:
Código:
drop table in (select RDB$RELATION_NAME from RDB$RELATIONS where
RDB$RELATION_NAME starting with 'DIA_')
Pero la primera parte de esto no funciona, ya que la subconsulta funciona correctamente si se hace de forma indenpendiente.
Aguna sugerencia?
Gracias.
Responder Con Cita
  #2  
Antiguo 01-02-2012
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.

Prueba utilizando el EXECUTE STATEMENT y construyendo en un bucle las sentencias de las tablas a eliminar.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 01-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
No he utilizado nunca EXECUTE STATAMENT pero mirando en los foros entiendo que se utiliza para crear procedimientos almacenados. ¿EStoy entendiendolo bien? Y lo que busco es crear un script sql para ejecutar en el IbExpert.
He probado:
Código:
declare tabla varchar(15);
declare borra varchar(100) = 'drop table :tabla';
begin
   for select RDB$RELATION_NAME from RDB$RELATIONS where
        RDB$RELATION_NAME starting with 'EXPRH'
     do
        execute statement (borra) (tabla := RDB$RELATION_NAME);
end;
y me da error de ejecución. No reconoce el delclare.
Responder Con Cita
  #4  
Antiguo 01-02-2012
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.

Exacto, deberías usarlo en un procedimiento almacenado. Aunque eso no tiene porqué ser ningún inconveniente. Tu script sql puede crear el procedimiento almacenado (create procedure ... ...), ejecutarlo (execute procedure ... ...) y finalmente eliminarlo (drop procedure ... ...).

Respecto al problema que tienes con la declaración de variables, este tipo de declaraciones van dentro de un procedimiento almacenado (el IB-Expert ya creará por ti la sección declare).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 01-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
Ya... Necesitaba hacerlo sin procedimiento almacenado.
Gracias de todos modos. Esperaré a ver si alguien me puede orientar.
Todo esto es para evitar meter en un sql con un churro de drop table.
Responder Con Cita
  #6  
Antiguo 01-02-2012
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.

¿ Quieres ejecutar un Script SQL en el IB-Expert pero no quieres que tenga procedimientos almacenados ?.

¿ Porqué razón ?, como ya te he comentado, el procedimiento almacenado no tiene porqué existir previamente, lo puedes crear y destruir en el mismo script en que se ejecuta.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 01-02-2012
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
Cita:
Empezado por guillotmarc Ver Mensaje
Hola.
¿ Quieres ejecutar un Script SQL en el IB-Expert pero no quieres que tenga procedimientos almacenados ?.
Si. Desde una aplicación de escritorio tengo una opción que es cargar scripts sql que se ejecutan contra la base de datos a la que está conectado. Lo utilizo para harcer mantenimientos específicos para algun cliente. Por esto lo del script y no ir creando procedimientos para cada cosa que hago con este sistema.
Responder Con Cita
  #8  
Antiguo 02-02-2012
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por apicito Ver Mensaje
Si. Desde una aplicación de escritorio tengo una opción que es cargar scripts sql que se ejecutan contra la base de datos a la que está conectado. Lo utilizo para harcer mantenimientos específicos para algun cliente. Por esto lo del script y no ir creando procedimientos para cada cosa que hago con este sistema.
Perfecto.

Ya se que me estoy repitiendo más que el ajo, , pero ¿ de verdad has entendido la parte de que dentro de un único Script puedes crear un procedimiento almacenado, ejecutarlo y finalmente eliminarlo para que toda la estructura de la base de datos vuelva a estar como al principio ?.

Código SQL [-]
SET TERM ^ ;

CREATE PROCEDURE ACTUALIZA_CLIENTES (
as
begin
  UPDATE CLIENTES SET TELEFONO = '+34-' || TELEFONO;
end
^

SET TERM ; ^

EXECUTE PROCEDURE ACTUALIZA_CLIENTES;

COMMIT WORK;

DROP PROCEDURE ACTUALIZA_CLIENTES;
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como eliminar registro de tablas en firebird? JXJ Firebird e Interbase 7 23-09-2010 22:10:18
Control de Usuarios segun Tablas diegonazaruka Firebird e Interbase 10 22-03-2010 17:46:52
Eliminar archivos segun su extension ZayDun Varios 2 14-07-2008 15:38:23
Error al eliminar 3 tablas de b.d. SQL Server Delphiboy Conexión con bases de datos 1 03-09-2005 18:36:49
Eliminar registros en tablas enlazadas vhirginia Conexión con bases de datos 12 29-04-2004 22:35:08


La franja horaria es GMT +2. Ahora son las 11:03:07.


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