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

Alexandre Sousa dave.malkavian em gmail.com
Qui Out 14 12:59:18 -03 2010


  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
>





Mais detalhes sobre a lista de discussão lista