wilson,
Deixa eu ver se entendi...
Você quer um único email... então o envio deve ser fora do loop.
se o tamanho é pequeno então o coloque com 32760.
CREATE OR REPLACE PROCEDURE WJOB_AGENDADOS AS
-- PROC PARA ENVIAR E-MAIL DOS AGENDAMENTOS DO DIA POSTERIOR
V_EMAIL_CORPO VARCHAR2(32760);
Z_NOME_CLI OS_AGENDA.CLIENTE_NOME%TYPE;
Z_DATA_AGENDADA OS_AGENDA.DATA_AGENDADA%TYPE;
Z_QUEM_AGENDOU OS_AGENDA.QUEM_ABRIU%TYPE;
Z_OBSERVACOES OS_AGENDA.OBSERVACOES%TYPE;
Z_TECNICO SERVICOS_TECNICOS.NOME%TYPE;
CURSOR C_AGENDA IS
SELECT A.CLIENTE_NOME,
TRUNC(A.DATA_AGENDADA),
A.QUEM_ABRIU,
B.DESCRICAO,
S.NOME
FROM OS_AGENDA A, PRISMA_BOX B, SERVICOS_TECNICOS S
WHERE A.PRISMA = B.PRISMA
AND S.COD_TECNICO = B.COD_TECNICO
AND A.COD_CLIENTE > 1
AND TRUNC(A.DATA_AGENDADA) = TRUNC(SYSDATE) + 1;
BEGIN
OPEN C_AGENDA;
V_EMAIL_CORPO :=NULL;
LOOP
FETCH C_AGENDA
INTO Z_NOME_CLI,
Z_DATA_AGENDADA,
Z_QUEM_AGENDOU,
Z_OBSERVACOES,
Z_TECNICO;
EXIT WHEN C_AGENDA%NOTFOUND;
V_EMAIL_CORPO :=V_EMAIL_CORPO|| ('CLIENTE:' || Z_NOME_CLI || ' / DATA AG.:' ||
Z_DATA_AGENDADA || ' / CONSULTOR: ' || Z_QUEM_AGENDOU ||
' / TECNICO: ' || Z_TECNICO);
END LOOP;
WENVIA_EMAIL_3(P_ASSUNTO => 'TESTE ASSUNTO',
P_MENSAGEM => V_EMAIL_CORPO,
P_REMETENTE => 'em...@email.com.br',
P_DESTINATARIO => 'em...@email.com.br');
CLOSE C_AGENDA;
END;
- Original Message -
From: "wilson junior87"
To: "oracle br"
Sent: Domingo, 9 de Março de 2014 23:53:29
Subject: [oracle_br] Problema com Proc enviando e-mail
Galera, gostaria de contar com a ajuda de vocês .. estou com pequeno impasse
para resolver.
Na verdade o problema é simples, mas infelizmente não consegui resolver do
jeito que quero.
No final do expediente, o analista de crédito daqui da empresa precisa receber
uma lista do clientes agendados para o dia seguinte, para que ele analise e
libere ou não o crédito para o cliente efetuar uma compra a prazo.
Eu fiz a procedure abaixo para ser executada através do job e até aí tubo bem,
MAS, ao enviar e-mail para o analista, a proc envia um e-mail para cada
registro que o select retorna. Eu preciso que seja enviado um e-mail só, com
todos os clientes agendados, e não consegui.
Alguém poderia me dar uma força para solucionar esse problema? rsrs
Agradeço desde já!
CREATE OR REPLACE PROCEDURE WJOB_AGENDADOS AS
-- PROC PARA ENVIAR E-MAIL DOS AGENDAMENTOS DO DIA POSTERIOR
V_EMAIL_CORPO VARCHAR2(4000);
Z_NOME_CLI OS_AGENDA.CLIENTE_NOME%TYPE;
Z_DATA_AGENDADA OS_AGENDA.DATA_AGENDADA%TYPE;
Z_QUEM_AGENDOU OS_AGENDA.QUEM_ABRIU%TYPE;
Z_OBSERVACOES OS_AGENDA.OBSERVACOES%TYPE;
Z_TECNICO SERVICOS_TECNICOS.NOME%TYPE;
CURSOR C_AGENDA IS
SELECT A.CLIENTE_NOME,
TRUNC(A.DATA_AGENDADA),
A.QUEM_ABRIU,
B.DESCRICAO,
S.NOME
FROM OS_AGENDA A, PRISMA_BOX B, SERVICOS_TECNICOS S
WHERE A.PRISMA = B.PRISMA
AND S.COD_TECNICO = B.COD_TECNICO
AND A.COD_CLIENTE > 1
AND TRUNC(A.DATA_AGENDADA) = TRUNC(SYSDATE) + 1;
BEGIN
OPEN C_AGENDA;
LOOP
FETCH C_AGENDA
INTO Z_NOME_CLI,
Z_DATA_AGENDADA,
Z_QUEM_AGENDOU,
Z_OBSERVACOES,
Z_TECNICO;
EXIT WHEN C_AGENDA%NOTFOUND;
V_EMAIL_CORPO := ('CLIENTE:' || Z_NOME_CLI || ' / DATA AG.:' ||
Z_DATA_AGENDADA || ' / CONSULTOR: ' || Z_QUEM_AGENDOU ||
' / TECNICO: ' || Z_TECNICO);
WENVIA_EMAIL_3(P_ASSUNTO => 'TESTE ASSUNTO',
P_MENSAGEM => V_EMAIL_CORPO,
P_REMETENTE => 'em...@email.com.br',
P_DESTINATARIO => 'em...@email.com.br');
END LOOP;
CLOSE C_AGENDA;
END;