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]',
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]