У меня есть процедура, которая отправляет почту. Я хочу отправить письмо, выбрав адреса электронной почты в представлении, и передать их моей процедуре.
Этот код работает так, что он выводит несколько адресов электронной почты и номера инцидентов из моей базы данных.
create or replace procedure SEND_REMINDER_MAIL as
CURSOR c1 IS
SELECT contact_email
FROM TEST.incidents_view
WHERE updated <= current_timestamp - interval '1' minute
and status_code = '100';
cursor c2 is
SELECT incident_number
FROM TEST.incidents_view WHERE updated <= current_timestamp - interval '1' minute
and status_code = '100';
v_contact_email varchar2(300);
v_incno VARCHAR2(10);
BEGIN
-- Open the cursor and loop through the records
OPEN c1;
FETCH c1 INTO v_contact_email;
EXIT WHEN c1%NOTFOUND;
-- Print values
dbms_output.put_line(v_contact_email);
end loop;
CLOSE c1;
open c2;
LOOP
fetch c2 into v_incno;
EXIT WHEN c2%NOTFOUND;
dbms_output.put_line(v_incno);
end loop;
CLOSE c2;
end;
/
Что мне нужно сделать, так это передать только адреса электронной почты в существующую процедуру электронной почты, чтобы отправлять электронные письма всем, кто появляется в списке, сгенерированном в результате.
Это следующая часть процедуры, я использовал dbms_output для проверки и проверки того, что адреса электронной почты генерируются правильно и передаются в v_contact_email. Теперь, когда я пытаюсь отправить письмо, передается только один адрес:
send_mail.send(
ToList=> v_contact_email,
Subject=> 'Ticket closing warning.',
Body=> 'Please note, your ticket '|| v_incno ||' will be subject to automatic closure',
FromEmail=> 'donotreply@test.com.au',
FromHost=> 'emailsrv',
SMTPServer=> 'emailsrv',);
close c1;
close c2;
End;
/
Он не отправляет несколько писем, которые, как показано, правильно передаются в v_contact_email. Он просто отправляет одно электронное письмо и ничего больше.
Почему несколько адресов электронной почты, зацикленных на v_contact_email, не приводят к отправке нескольких писем вместо одного?
Как я могу это исправить так:
send_mail.send(
ToList=> v_contact_email,
Subject=> 'Ticket closing warning.',
Body=> 'Please note, your ticket '|| v_incno ||' will be subject to automatic closure',
FromEmail=> 'donotreply@test.com.au',
FromHost=> 'emailsrv',
SMTPServer=> 'emailsrv',);
close c1;
close c2;
End;
/
Часть кода правильно перебирает полный набор результатов? Вместо того, чтобы просто получить один адрес и запустить одно электронное письмо, прежде чем больше ничего не делать?