Re: [oracle_br] Problema com Proc enviando e-mail

2014-03-10 Por tôpico Sérgio Luiz Rodrigues Chaves
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;







[oracle_br] Problema com Proc enviando e-mail

2014-03-09 Por tôpico wilson.junior87
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;