[firebase-br] usando o execute block

Sandro Souza escovadordebits em gmail.com
Qua Fev 3 15:21:54 -03 2010


Bom dia/tarde Cassios.

Grande Cassios, com certeza podemos executar comandos de DDL em stored
procedures e blocos de comando, mas via EXECUTE STATEMENT.

Além disso, o SELECT COUNT sempre vai retornar um valor (nem que seja zero),
ou seja, da forma que está estruturado esse comando, o operador EXISTS
sempre retornará verdadeiro, e sempre tentará excluir a tabela.

Por favor, teste o seguinte comando:

SET TERM ^ ;

EXECUTE BLOCK AS
BEGIN
  IF (EXISTS(SELECT
               RDB$RELATION_NAME
             FROM
               RDB$RELATIONS
             WHERE
               RDB$RELATION_NAME = '*minha_tabela*')) THEN
    *EXECUTE STATEMENT* 'DROP TABLE *minha_tabela*';
END^

SET TERM ; ^

Espero ter ajudado mais que atrapalhado. :D

Em 3 de fevereiro de 2010 14:14, Cassios <cassio.hc em gmail.com> escreveu:

> Oi.
>
> to fazendo isso:
>
> SET TERM ^ ;
> EXECUTE BLOCK
> as
> begin
>     if (EXISTS(SELECT COUNT(RDB$RELATION_NAME)
>                FROM RDB$RELATIONS
>                WHERE (RDB$RELATION_NAME = 'minha_tabela')))  then
>        DROP TABLE minha tabela;
> END ^
>
> SET TERM ; ^
>
>
> o problema é que retorna erro no drop table.. não dá pra usar comandos de
> estrutura? com delete, insert, update funciona... mas drops, alters não.
>
> preciso fazer várias coisas com triggers e SPs também. tipo, verificar se a
> trigger existe, caso exista, drop ela e crio a nova, com as modificações...
> é para meu atualizador de BD.
>
> vlw as dicas desde já.
>
> flw.
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista