[firebase-br] Execute statement em trigger???

Pedro Braga bragaped em gmail.com
Qua Dez 22 16:52:47 -03 2010


Utilizo Sempre Dessa Forma e Nunca tive Problema.

sql = 'update grade_prod g set g.estoque = (coalesce(g.estoque,0)) +
('||new.quantidade||'), EGRA'||new.index_grade||' =
(coalesce(EGRA'||new.index_grade||',0)) + ('||new.quantidade||') '||
              'where g.cod_interno = '||new.cod_interno||' and g.cod_empresa
= '||new.cod_empresa||' and g.cod_prod='||new.cod_produto||';';
        EXECUTE STATEMENT :sql;

o problema Ocorre pois o Execute Statement Executa o Comando Diretamente e
não tem como passar um new.Campo voce precisa passar o Valor Diretamente.




Em 22 de dezembro de 2010 16:32, Marcos Weimer <marcosweimer em gmail.com>escreveu:

> Boa Tarde
>
> Tenho uma trigger para fazer um LOG em uma tabela, essa trigger faz um for
> select nos campos e executa o codigo abaixo...
>
>
>    if (column_name <> 'DATA_CRIACAO_ALTERACAO') then
>    begin
>      comandosql = 'execute procedure P_INSERT_LOG_COLUNA(' ||:VAR_ID ||',
> ''' || :column_name ||''' , null, new.' || :column_name || ');';
>      execute statement comandosql;
>    end
>
> este execute statement sempre vi em procedures e tal... nunca vi em
> trigger...
> nesse caso se gero um exception o comandosql aparece ok (execute procedure
> P_INSERT_LOG_COLUNA(1,'CODFILIAL',null,new.CODFILIAL))
>
> o problema que com o execute statemente ele deixa de reconhecer o
> new.CODFILIAL (Dynamic SQL Error /  SQL error code = -206 / Column unknown
> /
> new.CODFILIAL)
>
> Alguem ja usou o execute statement em trigger???
>
> Minha ideia é fazer usando o execute statemente para não ficar uma trigger
> gigante com varias linhas "repetidas" (1 linha para cada campo)
>
>
> Desde ja. Obrigado.
>
>
>
> --
> -=Ma®©oS=-
> Marcos R. Weimer
> Puma GTE 1974 Tubarão
> ______________________________________________
> 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