Boa tarde
Estou com problema para fechar a a conexão do UTL_SMTP.
Quando executo a procedure mais de uma vez, apresenta erro: "too many open connections".
Exemplo:
Se executo esse bloco inteiro ele apresenta o erro a seguir:
EXEC ATUALIZACAO(382002, 73, 356.000, 371.900);
EXEC ATUALIZACAO(382003, 73, 373.600, 386.900);
EXEC ATUALIZACAO(382004, 73, 389.600, 399.400);
EXEC ATUALIZACAO(382005, 73, 117.500, 128.200);
EXEC ATUALIZACAO(382006, 73, 130.900, 138.800);
EXEC ATUALIZACAO(382007, 73, 146.600, 157.000);
------------ERRO---------------
0678. 00000 - "too many open connections"
*Cause: An attempt to open a connection failed because too many
are already open by this session. The number of allowed
connections varies as some may be in use through other
components which share the same pool of allowed connections.
*Action: Retry after closing some other connection. The number of
connections supported is currently not adjustable.
Agora se executo um por um não da erro. A impressão que tenho é que não esta fechando a conexão do UTL_SMTP.
Ja tentei utilizar o UTL_SMTP.QUIT e o UTL_SMTP.CLOSE_CONNECTION dentro e fora do loop , mas não funcionou.
Alguém tem alguma dica do que pode ser feito ?
Segue a procedure :
--Enviar o E-Mail
IF bEnviaMail then --(StrDscMsg is not NULL) THEN
StrCabMail := 'VERSAO : '||p_Versao ||' DIV: '||p_Division ||crlf||crlf||
'ID Anti Novo ID KM Ini KM Fim Lin Vel Tipo H_Ini H_Fim Motivo ';
StrDscMsg := StrCabMail ||crlf|| StrDscMsg;
connmail := UTL_SMTP.OPEN_CONNECTION('smtp',25);
FOR RegEmail IN(
SELECT MR_MAIL
FROM MAIL_REFRESH
WHERE MR_GRUPO = 1
) LOOP
BEGIN
----connmail := UTL_SMTP.OPEN_CONNECTION('smtp',25);
StrMailMsg := 'Date: ' ||TO_CHAR( SYSDATE,'dd Mon yyyy hh24:mi:ss') ||crlf||
'From: <' ||'restricao@gmail.com'||'>' ||crlf||
'Subject: '||'REFRESH VERSAO ' || p_Versao ||
TO_CHAR( SYSDATE,' dd/mm/yyyy hh24:mi:ss') ||crlf||
'To: ' || ToEmail ||crlf||
' Atualizações que foram retiradas e recolocadas na base ' ||crlf||
'' ||crlf||
'Banco: ' || db_name || ' - ' || schema_name ||crlf||
'' ||crlf||
StrDscMsg ||crlf||
'' ||crlf||
'' ||crlf||
'[ATUALIZACAO]';
UTL_SMTP.HELO(connmail,'smtp');
UTL_SMTP.MAIL(connmail,'restricao@gmail.com');
UTL_SMTP.RCPT(connmail, RegEmail.MR_MAIL);
UTL_SMTP.DATA(connmail,StrMailMsg);
-- UTL_SMTP.QUIT(connmail);
END;
End Loop;
UTL_SMTP.QUIT(connmail);
End If;
COMMIT;
END;