Dei uma olhada nos tópicos anteriores e não achei nada sobre, se já foi perguntado desculpe.
Seguinte sou nova com o ORACLE, ainda estou aprendendo. O meu problema é: Estou querendo enviar um e-mail a partir do banco com os registros do meu select. Porém são muitos registros e não é possível usar o tipo VARCHAR2, logo estou tentando usar o tipo CLOB. Mas não estou conseguindo, sempre da erro, ou envia o e-mail sem o conteúdo.
Abaixo está o código que eu estava usando. Se alguém puder ajudar eu agradecerei.
procedure PRD_SEND_MAIL(
pSender in varchar2,
pRecipient in varchar2,
pMailHost in varchar2 DEFAULT 'smtp-appl1.senado.gov.br',
pCcRecipient in varchar2 DEFAULT null,
pSubject in varchar2,
pMessage in CLOB,
pStatus in out nocopy varchar2)
is
vMessage CLOB := pMessage;
vHost varchar2(100) := 'smtp-appl1.senado.gov.br';
vCcRecipient varchar2(100) := pCcRecipient;
vConnection utl_smtp.connection;
vReply reply;
crlf constant varchar2 (2) := CHR(13) || CHR(10);
pos PLS_INTEGER := 1;
bytes_o_data CONSTANT PLS_INTEGER := 32767;
offset PLS_INTEGER := bytes_o_data;
msg_length CONSTANT PLS_INTEGER := DBMS_LOB.getlength (pMESSAGE);
PROCEDURE SEND_HEADER(header IN varchar2, content IN varchar2)
AS
BEGIN
utl_smtp.write_data(vConnection, header || ': ' || content || vCRLF);
END;
begin
-- Abre conexão
pStatus := 'OK';
vConnection := utl_smtp.open_connection(vHost);
-- efetua o Handshake.
utl_smtp.helo(vConnection, vHost);
-- Assinala remetente e destinatário
utl_smtp.mail(vConnection, pSender);
utl_smtp.rcpt(vConnection, pRecipient);
-- Verifica "destinatário-cópia"
if (vCcRecipient is not null) then
utl_smtp.rcpt(vConnection, vCcRecipient);
else
vCcRecipient := '';
end if;
-- Cria mensagem
utl_smtp.open_data(vConnection);
-- send_header('Date', TO_CHAR(SYSDATE, 'fmDy, dd Mon yyyy fxhh24:mi:ss') );
send_header('From', pSender);
send_header('To', pRecipient);
send_header('Subject', pSubject);
-- send_header('Cc', vCcRecipient);
send_header('MIME-Version', '1.0');
send_header('Content-Type', 'text/html; charset=iso-8859-1');
send_header('Content-Disposition', 'inline');
send_header('Content-Transfer-Encoding', 'quoted-printable');
-- envia os dados
while pos < msg_length
loop
utl_smtp.write_data (vConnection, dbms_lob.substr (vmessage, offset, pos));
pos := pos + offset;
offset := LEAST (bytes_o_data, msg_length - offset);
end loop;
utl_smtp.close_data(vConnection);
-- Fecha conexão
utl_smtp.quit(vConnection);
exception
when others then
pStatus := substr(sqlerrm, 1, 200);
end PRD_SEND_MAIL;