[firebase-br] usando o execute block

Cassios cassio.hc em gmail.com
Qua Fev 3 16:16:59 -03 2010


Obrigado Sandro... abraço!

Sandro Souza escreveu:
> 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
>>
> ______________________________________________
> 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