Mic Mota 0 Denunciar post Postado Março 12, 2008 Olá a todos. Criei uma trigger de auditoria no Oracle, porém não roda de jeito algum. Não consigo entender porque ocorre erro nessa linha: SQL> show errors; Erros para TRIGGER TRG_AUD_DEPTALLIMROTULO: LINE/COL ERROR -------- ----------------------------------------------------------------- 53/7 PL/SQL: SQL Statement ignored 53/27 PL/SQL: ORA-00942: a tabela ou view não existe SQL> Segue a trigger create or replace trigger trg_aud_deptallimrotulo after insert or delete or update of CD_CRITERIO, CD_ROTULO, NM_LIMITEINI, NM_LIMITEFIM on DEPTAL_LIMITE_ROTULO for each row declare v_operacao varchar2(0100) := null; v_tabela varchar2(0100) := 'DEPTAL_LIMITE_ROTULO'; v_terminal varchar2(0100) := null; v_id_chave varchar2(0500) := null; v_conteudo_antigo varchar2(2000) := null; v_conteudo_atual varchar2(2000) := null; begin if inserting or updating then v_id_chave := ' CD_CRITERIO = '||to_char(:new.CD_CRITERIO); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:new.CD_ROTULO); else v_id_chave := ' CD_CRITERIO = '||to_char(:old.CD_CRITERIO); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:old.CD_ROTULO); end if; if inserting then v_operacao := 'INSERT'; v_conteudo_atual := ' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL'); elsif updating then if nvl(:new.CD_CRITERIO,0) != nvl(:old.CD_CRITERIO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||' CD_CRITERIO='||nvl(:old.CD_CRITERIO,'NULL'); end if; if nvl(:new.CD_ROTULO,0) != nvl(:old.CD_ROTULO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',CD_ROTULO='||nvl(:old.CD_ROTULO,'NULL'); end if; if nvl(:new.NM_LIMITEINI,'0') != nvl(:old.NM_LIMITEINI,'0') then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NM_LIMITEINI='||nvl(:old.NM_LIMITEINI,'NULL'); end if; if nvl(:new.NM_LIMITEFIM,'0') != nvl(:old.NM_LIMITEFIM,'0') then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NM_LIMITEFIM='||nvl(:old.NM_LIMITEFIM,'NULL'); end if; if v_conteudo_atual is null then return; end if; elsif deleting then v_operacao := 'DELETE'; end if; declare cursor mach is select machine from v$session where username = user; begin open mach; fetch mach into v_terminal; close mach; end; insert into f_auditoria(data ,hora ,usuario ,terminal ,tabela ,id_chave ,conteudo_antigo ,conteudo_atual ,operacao ) values (trunc(sysdate) ,to_char(sysdate,'HH24MISS') ,user ,v_terminal ,v_tabela ,v_id_chave ,v_conteudo_antigo ,v_conteudo_atual ,v_operacao); end; / Se alguem puder me ajudar, agradeço!!! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 12, 2008 Parente : Ou a tabela f_auditoria não existe ou a tabela da trigger DEPTAL_LIMITE_ROTULO tem um owner e a tabela de insert outro. No segundo caso basta uma qualficação insert into usuariob.f_auditoria(data ... ou ... pode ser falta de acesso a v$session - pela linha (53) parece ser isto ... Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Março 13, 2008 Ola Motta Muito obrigada mesmo... na verdade o user nao tinha acesso de SELECT na tabela v$session Vlw pela ajuda!! Te mais!!! :D Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Março 13, 2008 Para quem quizer a solução é: Conectar-se com o usuário SYS as sysdba SQL> grant select on v_$session to <usuário>; Abraços, Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Março 17, 2008 Olha eu aqui de novo... Puxa está sendo um desafio para mim desenvolver em Oracle, mas vamos la! Se alguem puder me ajudar!!! :D Cria a trigger normalmente, porém quando realizo INSERT na tabela ocorre erro, Olha já revirei o código e não entendo porque ocorre esse erro nessa trigger: 79 insert into deptal_auditoria(data 80 ,hora 81 ,usuario 82 ,terminal 83 ,tabela 84 ,id_chave 85 ,conteudo_antigo 86 ,conteudo_atual 87 ,operacao) values 88 (trunc(sysdate) 89 ,to_char(sysdate,'HH24MISS') 90 ,user 91 ,v_terminal 92 ,v_tabela 93 ,v_id_chave 94 ,v_conteudo_antigo 95 ,v_conteudo_atual 96 ,v_operacao); 97* end; 98 / Gatilho criado. SQL> insert into deptal_notas values(1,100010057,942,0,0,22007); insert into deptal_notas values(1,100010057,942,0,0,22007) * ERRO na linha 1: ORA-06502: PL/SQL: erro: erro de conversão de caractere em número numérico ou de valor ORA-06512: em "DESENV.TRG_AUD_DEPTALNOTAS", line 24 ORA-04088: erro durante a execução do gatilho 'DESENV.TRG_AUD_DEPTALNOTAS' Segue a trigger completa create or replace trigger trg_aud_deptalnotas after insert or delete or update of CD_ROTULO, NR_MATRALUN, CD_IDENTDISC, VL_NOTA, ST_BLOQ, NM_SEMANO on DEPTAL_NOTAS for each row declare v_operacao varchar2(0100) := null; v_tabela varchar2(0100) := 'DEPTAL_NOTAS'; v_terminal varchar2(0100) := null; v_id_chave varchar2(0500) := null; v_conteudo_antigo varchar2(2000) := null; v_conteudo_atual varchar2(2000) := null; begin if inserting or updating then v_id_chave := ' NR_MATRALUN = '||to_char(:new.NR_MATRALUN); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_IDENTDISC = '||to_char(:new.CD_IDENTDISC); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:new.CD_ROTULO); else v_id_chave := ' NR_MATRALUN = '||to_char(:old.NR_MATRALUN); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_IDENTDISC = '||to_char(:old.CD_IDENTDISC); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:old.CD_ROTULO); end if; if inserting then v_operacao := 'INSERT'; v_conteudo_atual := ' CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NR_MATRALUN='||nvl(:new.NR_MATRALUN,'NULL'); v_conteudo_atual := v_conteudo_atual ||',CD_IDENTDISC='||nvl(:new.CD_IDENTDISC,'NULL'); v_conteudo_atual := v_conteudo_atual ||',VL_NOTA='||nvl(:new.VL_NOTA,'NULL'); v_conteudo_atual := v_conteudo_atual ||',ST_BLOQ='||nvl(:new.ST_BLOQ,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_SEMANO='||nvl(:new.NM_SEMANO,'NULL'); elsif updating then if nvl(:new.CD_ROTULO,0) != nvl(:old.CD_ROTULO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||' CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||' CD_ROTULO='||nvl(:old.CD_ROTULO,'NULL'); end if; if nvl(:new.NR_MATRALUN,0) != nvl(:old.NR_MATRALUN,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NR_MATRALUN='||nvl(:new.NR_MATRALUN,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NR_MATRALUN='||nvl(:old.NR_MATRALUN,'NULL'); end if; if nvl(:new.CD_IDENTDISC,0) != nvl(:old.CD_IDENTDISC,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',CD_IDENTDISC='||nvl(:new.CD_IDENTDISC,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',CD_IDENTDISC='||nvl(:old.CD_IDENTDISC,'NULL'); end if; if nvl(:new.VL_NOTA,0) != nvl(:old.VL_NOTA,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',VL_NOTA='||nvl(:new.VL_NOTA,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',VL_NOTA='||nvl(:old.VL_NOTA,'NULL'); end if; if nvl(:new.ST_BLOQ,0) != nvl(:old.ST_BLOQ,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',ST_BLOQ='||nvl(:new.ST_BLOQ,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',ST_BLOQ='||nvl(:old.ST_BLOQ,'NULL'); end if; if nvl(:new.NM_SEMANO,0) != nvl(:old.NM_SEMANO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NM_SEMANO='||nvl(:new.NM_SEMANO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NM_SEMANO='||nvl(:old.NM_SEMANO,'NULL'); end if; if v_conteudo_atual is null then return; end if; elsif deleting then v_operacao := 'DELETE'; end if; declare cursor mach is select machine from v$session where username = user; begin open mach; fetch mach into v_terminal; close mach; end; insert into deptal_auditoria(data ,hora ,usuario ,terminal ,tabela ,id_chave ,conteudo_antigo ,conteudo_atual ,operacao) values (trunc(sysdate) ,to_char(sysdate,'HH24MISS') ,user ,v_terminal ,v_tabela ,v_id_chave ,v_conteudo_antigo ,v_conteudo_atual ,v_operacao); end; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 17, 2008 Erro de conversão , provavelmente nesta linha v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:old.CD_ROTULO); Talvez o conteúdo tenha excedido 500 char. Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Março 17, 2008 hum... pode ser... vou testar e retorno.... ;) Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Março 17, 2008 continua o mesmo erro :( mudei o tamanho para 2000 e não surtiu efeito... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 18, 2008 Qual o tamanho e tipo de CD_ROTULO ? Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Março 19, 2008 O campo CD_ROTULO: CD_ROTULO NOT NULL NUMBER(38) Fiz um teste removendo essa linha do código, permanece o erro apontando para a última linha que seria v_id_chave := v_id_chave ||' CD_IDENTDISC = '||to_char(:old.CD_IDENTDISC); end if; Compartilhar este post Link para o post Compartilhar em outros sites
Morpheus#2005 1 Denunciar post Postado Março 19, 2008 Roda esse aqui meu Fio.. create or replace trigger trg_aud_deptalnotas after insert or delete or update of CD_ROTULO, NR_MATRALUN, CD_IDENTDISC, VL_NOTA, ST_BLOQ, NM_SEMANO on DEPTAL_NOTAS for each row declare v_operacao varchar2(0100) := null; v_tabela varchar2(0100) := 'DEPTAL_NOTAS'; v_terminal varchar2(0100) := null; v_id_chave varchar2(0500) := null; v_conteudo_antigo varchar2(2000) := null; v_conteudo_atual varchar2(2000) := null; begin if inserting or updating then v_id_chave := ' NR_MATRALUN = '||to_char(:new.NR_MATRALUN); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_IDENTDISC = '||to_char(:new.CD_IDENTDISC); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:new.CD_ROTULO); else v_id_chave := ' NR_MATRALUN = '||to_char(:old.NR_MATRALUN); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_IDENTDISC = '||to_char(:old.CD_IDENTDISC); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:old.CD_ROTULO); end if; if inserting then v_operacao := 'INSERT'; v_conteudo_atual := ' CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NR_MATRALUN='||nvl(:new.NR_MATRALUN,'NULL'); v_conteudo_atual := v_conteudo_atual ||',CD_IDENTDISC='||nvl(:new.CD_IDENTDISC,'NULL'); v_conteudo_atual := v_conteudo_atual ||',VL_NOTA='||nvl(:new.VL_NOTA,'NULL'); v_conteudo_atual := v_conteudo_atual ||',ST_BLOQ='||nvl(:new.ST_BLOQ,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_SEMANO='||nvl(:new.NM_SEMANO,'NULL'); elsif updating then if nvl(:new.CD_ROTULO,0) != nvl(:old.CD_ROTULO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',CD_ROTULO='||nvl(:old.CD_ROTULO,'NULL'); end if; if nvl(:new.NR_MATRALUN,0) != nvl(:old.NR_MATRALUN,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NR_MATRALUN='||nvl(:new.NR_MATRALUN,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NR_MATRALUN='||nvl(:old.NR_MATRALUN,'NULL'); end if; if nvl(:new.CD_IDENTDISC,0) != nvl(:old.CD_IDENTDISC,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',CD_IDENTDISC='||nvl(:new.CD_IDENTDISC,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',CD_IDENTDISC='||nvl(:old.CD_IDENTDISC,'NULL'); end if; if nvl(:new.VL_NOTA,0) != nvl(:old.VL_NOTA,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',VL_NOTA='||nvl(:new.VL_NOTA,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',VL_NOTA='||nvl(:old.VL_NOTA,'NULL'); end if; if nvl(:new.ST_BLOQ,0) != nvl(:old.ST_BLOQ,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',ST_BLOQ='||nvl(:new.ST_BLOQ,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',ST_BLOQ='||nvl(:old.ST_BLOQ,'NULL'); end if; if nvl(:new.NM_SEMANO,0) != nvl(:old.NM_SEMANO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NM_SEMANO='||nvl(:new.NM_SEMANO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NM_SEMANO='||nvl(:old.NM_SEMANO,'NULL'); end if; if v_conteudo_atual is null then return; end if; elsif deleting then v_operacao := 'DELETE'; end if; declare cursor mach is select machine from v$session where username = user; begin open mach; fetch mach into v_terminal; close mach; end; insert into deptal_auditoria(data ,hora ,usuario ,terminal ,tabela ,id_chave ,conteudo_antigo ,conteudo_atual ,operacao) values (trunc(sysdate) ,to_char(sysdate,'HH24MISS') ,user ,v_terminal ,v_tabela ,v_id_chave ,v_conteudo_antigo ,v_conteudo_atual ,v_operacao); end; Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Março 24, 2008 não funcionou... apresenta o mesmo erro... o insert que estou usando para testar a trigger é esse... Insert into Deptal_Notas values (7,112062351,942,0,0,20072) Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Abril 2, 2008 pessoal... alguem tem uma luz??? Parente??? ainda estou com esse problema... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 2, 2008 faça algo assim create or replace trigger trg_aud_deptallimrotulo after insert or delete or update of CD_CRITERIO, CD_ROTULO, NM_LIMITEINI, NM_LIMITEFIM on DEPTAL_LIMITE_ROTULO for each row declare v_operacao varchar2(0100) := null; v_tabela varchar2(0100) := 'DEPTAL_LIMITE_ROTULO'; v_terminal varchar2(0100) := null; v_id_chave varchar2(0500) := null; v_conteudo_antigo varchar2(2000) := null; v_conteudo_atual varchar2(2000) := null; fase char(4); begin if inserting or updating then fase := '0001';-- v_id_chave := ' CD_CRITERIO = '||to_char(:new.CD_CRITERIO); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:new.CD_ROTULO); else fase := '0002';-- mude este numero v_id_chave := ' CD_CRITERIO = '||to_char(:old.CD_CRITERIO); v_id_chave := v_id_chave ||' AND'; v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:old.CD_ROTULO); end if; if inserting then v_operacao := 'INSERT'; v_conteudo_atual := ' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL'); elsif updating then if nvl(:new.CD_CRITERIO,0) != nvl(:old.CD_CRITERIO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||' CD_CRITERIO='||nvl(:old.CD_CRITERIO,'NULL'); end if; if nvl(:new.CD_ROTULO,0) != nvl(:old.CD_ROTULO,0) then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',CD_ROTULO='||nvl(:old.CD_ROTULO,'NULL'); end if; if nvl(:new.NM_LIMITEINI,'0') != nvl(:old.NM_LIMITEINI,'0') then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NM_LIMITEINI='||nvl(:old.NM_LIMITEINI,'NULL'); end if; if nvl(:new.NM_LIMITEFIM,'0') != nvl(:old.NM_LIMITEFIM,'0') then v_operacao := 'UPDATE'; v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL'); v_conteudo_antigo := v_conteudo_antigo ||',NM_LIMITEFIM='||nvl(:old.NM_LIMITEFIM,'NULL'); end if; if v_conteudo_atual is null then return; end if; elsif deleting then v_operacao := 'DELETE'; end if; declare cursor mach is select machine from v$session where username = user; begin open mach; fetch mach into v_terminal; close mach; end; insert into f_auditoria(data ,hora ,usuario ,terminal ,tabela ,id_chave ,conteudo_antigo ,conteudo_atual ,operacao ) values (trunc(sysdate) ,to_char(sysdate,'HH24MISS') ,user ,v_terminal ,v_tabela ,v_id_chave ,v_conteudo_antigo ,v_conteudo_atual ,v_operacao); exception when others then dbms_output.put_line(fase) end; / vai saber em que ponto dá a caca , assim fica um pouco + fácil. Compartilhar este post Link para o post Compartilhar em outros sites
Mic Mota 0 Denunciar post Postado Abril 3, 2008 Parente... querido... "A solução mora ao lado" => Brola http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Consultei o rapaz que trabalha aqui comigo (devia ter feito isso no começo, sei), e ele me disse onde estava o problema. Na verdade o erro ocorre nas linhas abaixo: if inserting then v_operacao := 'INSERT'; v_conteudo_atual := ' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL'); Pois ai voce tem um campo do tipo numérico sendo concatenado com uma string. Não vai mesmo funcionar rsrs Solução: if inserting then v_operacao := 'INSERT'; v_conteudo_atual := ' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL'); v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(to_char(:new.CD_ROTULO),'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(to_char(:new.NM_LIMITEINI),'NULL'); v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(to_char(:new.NM_LIMITEFIM),'NULL'); O que um to_char não pode proporcionar a desenvolvedores desesperados rsrsrs Bom, problema resolvido. Obrigada a todos que me responderam, obrigada mesmo!!! Bj parente! Abraços, Compartilhar este post Link para o post Compartilhar em outros sites