[firebase-br] usando o execute block

Sandro Souza escovadordebits em gmail.com
Qua Fev 3 15:38:57 -03 2010


Bom dia/tarde Cassios.

Grande Cassios, não seja por isso.

Para stored procedures, use a tabela RDB$PROCEDURES, como no seguinte
exemplo:

SET TERM ^ ;

EXECUTE BLOCK AS
BEGIN
  IF (EXISTS(SELECT
               RDB$PROCEDURE_NAME
             FROM
               RDB$PROCEDURES
             WHERE
               RDB$PROCEDURE_NAME = '*minha_procedure*')) THEN
    *EXECUTE STATEMENT* 'DROP PROCEDURE *minha_**procedure*';
END^

SET TERM ; ^

Para triggers, use a tabela RDB$TRIGGERS, como no seguinte exemplo:

SET TERM ^ ;

EXECUTE BLOCK AS
BEGIN
  IF (EXISTS(SELECT
               RDB$TRIGGER_NAME
             FROM
               RDB$TRIGGERS
             WHERE
               RDB$TRIGGER_NAME = '*minha_trigger*')) THEN
    *EXECUTE STATEMENT* 'DROP TRIGGER *minha_**trigger*';
END^

SET TERM ; ^

Espero ter ajudado mais que atrapalhado. :D

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

> Grande Sandro.. obrigado pelo retorno.
> Ajudou muito, funcionou beleza...
>
> como eu faço pra fazer o mesmo com trigger e Stored procedures? qual a
> tabela do sistema que guarda isso?
>
>
> vlw...
>
>
>
>
> Sandro Souza escreveu:
>
>  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
>>>
>>>  ______________________________________________
>> 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
>>
>>
>
> ______________________________________________
> 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