[firebase-br] Ref. Execução Procedure

Alexandre Sousa dave.malkavian em gmail.com
Qui Out 14 14:09:55 -03 2010


  Voce pode tentar usar as funções SET_CONTEXT e GET_CONTEXT...

não lembro direito como usá-las, mas veja se serve ao seu proposito.

[]'s
Alexandre Sousa

Em 14/10/2010 13:13, Omar Marques Haddad escreveu:
> Pootz grila....(desculpem-me)
>
> É isto. Esta função copiei de um banco em 1.5 que roda de boa.Agora, joguei
> dentro do meu BD 2.1 e estou tentando rodar e dá o erro.
>
> Será que tem algo semelhante que possa fazer no 2.1 usando exception para
> dar um alerta ao usuário ?
>
> Valewws. Matou a pau !
>
> Obrigado
>
> Em 14 de outubro de 2010 11:59, Alexandre Sousa
> <dave.malkavian em gmail.com>escreveu:
>
>>   Foi migrado recentemente para o firebird 2.1?
>>
>> Se não me engano foram adicionadas validações que impedem alterações nas
>> tabelas de sistema.
>>
>> []'s
>> Alexandre Sousa
>> Em 14/10/2010 12:28, Omar Marques Haddad escreveu:
>>
>>   Fala brothers,
>>> Tenho uma Procedure de Mensagem "SHOW_MESSAGE", que uso para dar display
>>> de
>>> mensagens dentro de Triggers, etc.
>>>
>>> Segue:
>>>
>>>
>>> SET TERM ^ ;
>>>
>>> create or alter procedure SHOW_MESSAGE (
>>>      MENSAGEM varchar(78))
>>> as
>>> BEGIN
>>>    UPDATE RDB$EXCEPTIONS
>>>       SET RDB$MESSAGE = :MENSAGEM
>>>     WHERE RDB$EXCEPTION_NAME = 'EXC_DINAMICO';
>>>    EXCEPTION EXC_DINAMICO;
>>> END^
>>>
>>> SET TERM ; ^
>>>
>>> GRANT EXECUTE ON PROCEDURE SHOW_MESSAGE TO TRIGGER
>>> CAIXA_DIARIO_MOVIMENTACAO_BI0;
>>> GRANT EXECUTE ON PROCEDURE SHOW_MESSAGE TO "PUBLIC";
>>> GRANT EXECUTE ON PROCEDURE SHOW_MESSAGE TO SYSDBA;
>>>
>>>
>>> Tenho uma trigger, no before insert de uma tabela de itens
>>>
>>> CREATE OR ALTER TRIGGER CAIXA_DIARIO_MOVIMENTACAO_BI0 FOR
>>> CAIXA_DIARIO_MOVIMENTACAO
>>> ACTIVE BEFORE INSERT POSITION 0
>>> AS
>>> DECLARE VARIABLE UltimoNItem Integer;
>>> BEGIN
>>>
>>>    EXECUTE PROCEDURE SHOW_MESSAGE('teste');
>>>
>>>    -- Captura o último número de Item deste usuário e data, já acrescido de
>>> 1.
>>>    Select Max( Coalesce(CXM.CXMOVIM_NUMITEM,0) )
>>>    from CAIXA_DIARIO_MOVIMENTACAO CXM
>>>    Where (CXM.CXMOVIM_CODUSUARIO = NEW.CXMOVIM_CODUSUARIO) and
>>>          (CXM.CXMOVIM_DATAMOVIMENTACAO = NEW.CXMOVIM_DATAMOVIMENTACAO)
>>>    Into UltimoNItem;
>>>
>>>    NEW.CXMOVIM_NUMITEM = (UltimoNItem+1);
>>>
>>> END
>>> ^
>>>
>>> SET TERM ; ^
>>>
>>>
>>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>
>>> Ao dar um insert normal na tabela para ver se a trigger calcula o valor do
>>> campo NUMITEM corretamente, ao rodar a linha:
>>>
>>> EXECUTE PROCEDURE SHOW_MESSAGE('teste');
>>>
>>> Recebo a mensagem abaixo:
>>>
>>> password required.
>>>
>>>
>>> Que senha é esta que ele está pedindo ? Uso FB 2.1. Estou logado como
>>> SYSDBA
>>> (padrão)
>>>
>>> Obrigado
>>>
>>>
>> ______________________________________________
>> 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