[firebase-br] procedure com EXECUTE STATEMENT e IF COMPLEXO = erro
Marcos Weimer
marcosweimer em gmail.com
Ter Dez 28 15:59:27 -03 2010
Tenho um procedure que cria as triggers para fazer a auditoria do banco
em um determinado momento gero essa parte do codigo...
sqloperacao = sqloperacao || 'if (' || ascii_char(13);
sqloperacao = sqloperacao || ' ((Oper = ''Inclusão'') and (log_i =
''S''))' || ascii_char(13);
sqloperacao = sqloperacao || ' or ((Oper = ''Atualização'') and (log_u =
''S''))' || ascii_char(13);
sqloperacao = sqloperacao || ' or ((Oper = ''Exclusão'') and (log_d =
''S''))' || ascii_char(13);
sqloperacao = sqloperacao || ') then' || ascii_char(13);
sqloperacao = sqloperacao || 'begin' || ascii_char(13);
sqloperacao = sqloperacao || 'EXECUTE PROCEDURE LOG_GRAVAR_OPERACAO
(:USER_NAME,''' || :tabela || ''', :oper,' || ascii_char(13);
e depois de mais algumas linhas.... execute statement
até ai tudo bem, o problema é quando vou rodar a procedure para gerar a
trigger.... ai vem o erro...
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.
At procedure 'LOG_CRIAR_TRIGGER' line: 125, col: 3.
se deixo o codigo da proc. dessa forma (removento parte da condição do IF)
sqloperacao = sqloperacao || 'if (' || ascii_char(13);
sqloperacao = sqloperacao || ' ((Oper = ''Inclusão'') and (log_i =
''S''))' || ascii_char(13);
sqloperacao = sqloperacao || ') then' || ascii_char(13);
sqloperacao = sqloperacao || 'begin' || ascii_char(13);
sqloperacao = sqloperacao || 'EXECUTE PROCEDURE LOG_GRAVAR_OPERACAO
(:USER_NAME,''' || :tabela || ''', :oper,' || ascii_char(13);
funciona.
Detalhe que tenho uma trigger que tem esse IF da mesma forma que passei para
a SP e funciona.
alguma sugestão?
--
-=Ma®©oS=-
Marcos R. Weimer
Puma GTE 1974 Tubarão
Mais detalhes sobre a lista de discussão lista