› Fóruns › Banco de dados Oracle › Trigger DDL after on database erro 31600 bco 10g › Trigger DDL after on database erro 31600 bco 10g
Bom, a primeira coisa que eu vejo é que a mensagem tá clara :
ORA-06502: PL/SQL: erro: buffer string to small
OU SEJA, tem algum buffer (ie, variável ou coluna string ou função de caracter, ou operador de caracter, como o concatenador) que está recebendo mais do que seu limite….
A segunda coisa que me salta aos olhos é esse CAST para varchar2 de um monte de colunas/valores/variáveis de sistema que iirc JÁ SÃO varchar2, como sys.dictionary_obj_name e sys.dictionary_obj_owner : esse negócio de transformar para caracter algo que JÁ É caracter só pode dar inhaca, Não Faz o MENOR dos MENORES SENTIDOS… Simplesmente é ERRADO, imho, vc está Inventando Moda….
O procedimento CORRETO para vc concatenar pedaços de valores string numa string maior (que é o que vc quer ao que entendo) imho é vc usar as FUNCÇÕES DE CARACTER, como SUBSTR, ao invés da maluquice de transformar em string via cast quem já é string…. Sorry….
A terceira coisa é que eu vejo é que vc definiu a variável S_DDL como CLOB : lá na tabela de Auditoria a coluna é CLOB também ??? Se for, Saiba que o procedimento correto pra inserir num LOB é usar a package DBMS_LOB, e ** não ** fazer o INSERT diretamente !!!!
Altere/reveja essas coisas e se precisar nos dê o DDL da tabela E dos objetos também envolvidos, que a gente pode tentar te ajudar mais….
[]s
Chiappa