Pessoal, tenho uma procedure, como podem ver logo abaixo, e estou com o seguinte problema, quando ela executa via sqlplus, ela funciona perfeitamente, porem quando eu coloco ela num job, ela da erro e não executa, quando eu dou o comando exec dbms_job.run(numero job); ele da o seguinte erro:
SQL> exec dbms_job.run(281); BEGIN dbms_job.run(281); END; * ERRO na linha 1: ORA-12011: a execução de 1 jobs falhou ORA-06512: em "SYS.DBMS_IJOB", line 406 ORA-06512: em "SYS.DBMS_JOB", line 272 ORA-06512: em line 1 Aparentemente seria a variável v_msg varchar(30000), porém o grande lance é que quando eu executo pelo sqlplus ele funciona perfeitamente, alguém saberia me responder aonde eu estou errando ?? Ah, e no trace do banco ele da a seguinte mensagem quando executa o job: Errors in file c:\oracle\product\10.2.0\admin\adtc2\bdump\adtc2_j000_2488.trc: ORA-12012: erro ao executar automaticamente o job 282 ORA-06502: PL/SQL: erro: buffer de string de caracteres pequeno demais numérico ou de valor ORA-06512: em "CARTECH.PALM_UTL", line 410 ORA-06512: em line 1 E outra coisa que notei é que tenho outras procedures com a mesma varialvel e o mesmo tamanho, e não dão erros. Segue abaixo a procedure: ---------------------------------------------------------- procedure email_faturamento(p_emp in ce_produtos.empresa%type ) /* || Verifica se inclui firma por ser do grupo */ is cursor cr is select * from palm_pastas; cursor cr2(vnd palm_pastas.codigo%type) is select * from cd_firmas where vendedor = vnd; /************ Cursor Notas*********************************/ cursor cr3(vnd palm_pastas.codigo%type) is select substr(firma,1,8) codigo, substr(cd_firmas_utl.nome(firma),1,28) Nome, trunc(dt_emissao) data, num_nota nota from ft_notas where status = 'A' and agente1 = vnd and dt_emissao between to_char(to_char('01/'|| to_char(sysdate,'MM/RR'))) and last_day(sysdate) and cod_oper = 119 order by data, num_nota; /************ Cursor Produtos de uma nota *********************************/ cursor cr5(nt ft_notas.num_nota%type) is select substr(produto,1,6) produto, substr(ce_produtos_utl.descricao(1,produto),1,28) descricao, (qtd * valor_unit) tot_p, qtd, valor_unit from ft_itens_nf where num_nota = nt; v_vencido number; v_qtd_vencido number; v_g1 cd_grupos.grupo%type; v_g2 cd_grupos.grupo%type; v_msg varchar2(32000); v_nomedest varchar2(50); v_nome varchar2(50); v_vence date; v_valor number(15,2); v_titulo number(9); v_situacao varchar2(20); v_totalped number(15,2); v_conta number; begin v_msg := ''; v_conta := 0; v_totalped := 0; for regemail in cr loop for regfirma in cr2(regemail.codigo) loop v_valor := 0; v_totalped := 0; v_msg := '****** Acompanhamento de faturamento *****' || '<br><br>'; for regpedidos in cr3(regemail.codigo) loop v_conta := v_conta + 1; v_msg := v_msg || '<b>' || rpad(regpedidos.nome,40,' ') || '</b><br>'; v_msg := v_msg || '<b>Nota: ' || regpedidos.nota || '</b><br>'; v_msg := v_msg || ' Data Emissão: ' || to_char(regpedidos.data,'DD/MM/RRRR') || '<br>'; --raise_application_error(-20100, v_conta); for regitens in cr5(regpedidos.nota) loop v_msg := v_msg || ' Codigo Produto: ' || rpad(regitens.produto,4,' ') || '<br> ' || rpad(regitens.descricao,30,' ') || '<br> ' || ' Qtde: ' || rpad(regitens.qtd,8,' ') || '<br>' || ' Valor Un.: R$ ' || to_char(regitens.valor_unit,'999G999d00') || '<br>' || ' Total Item: R$ ' || to_char(regitens.tot_p,'99999d00') || '<br>'; v_valor := v_valor + regitens.tot_p; exit when length(v_msg) > 32000; end loop; v_msg := v_msg || '** Total Nota: R$ ' || to_char(v_valor,'999G999d00') || '<br><br>'; v_totalped := nvl(v_totalped,0) + nvl(v_valor,0); v_valor := 0; exit when length(v_msg) > 32000; end loop; v_msg := v_msg || '** Total Acomp. faturamento:<b> R$ ' || to_char(v_totalped,'999G999d00') || '</b><br>'; end loop; if v_conta > 0 then demo_mail.send_email('[EMAIL PROTECTED] <mailto:%27sistema%40cartechautomotive.com.br> omotive.com.br', regemail.email, 'Cartech: Acompanhamento de Faturamento', v_msg); end if; v_nomedest := ''; v_msg := ''; v_conta := 0; v_totalped := 0; v_valor := 0; end loop; --RAISE_APPLICATION_ERROR(-20100, V_MSG); end; [As partes desta mensagem que não continham texto foram removidas]