[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