PL/SQL процедура отправки электронной почты с переменными
Я написал процедуру в оракуле, которая отправит электронное письмо. Я хотел бы включить переменные в тело сообщения, которые должны ссылаться на переменные, вычисленные в другой процедуре.
В качестве примера, скажем, у меня есть процедура:
select a1+a2
into a
from table c;
И следующим шагом будет отправка электронного письма, включая:
create or replace PROCEDURE MAIL AS
BEGIN
DECLARE
l_html VARCHAR2(32767);
BEGIN
l_html := '<html>
<body>
<p>a</p> <!-- here I'd like my result from another procedure to appear-->
</body>
</html>';
utl_mail.send(sender => 'something@bla.com',
recipients => 'bla@bla.com',
message => l_html,
mime_type => 'text/html'
);
Код слишком упрощен, чтобы показать общую идею, и я ищу, как установить связь между двумя подобными процедурами. Поскольку первая процедура довольно обширна, отправка почты в рамках одной и той же процедуры невозможна. Заранее спасибо за любые советы / идеи!
1 ответ
Вы можете просто вызвать другую функцию / процедуру в вашей почтовой процедуре; например:
/* define a function that computes some needed result */
create or replace function someFunction return varchar2 is
retVal varchar2(1000);
begin
select 'my content'
into retVal
from dual;
return retVal;
end;
create or replace procedure MAIL as
html varchar2(32767);
variableContent varchar2(1000);
begin
/* use your function to get your variable content */
variableContent := someFunction();
html := '
<html>
<body>
<p>' || variableContent || '</p>
</body>
</html>';
dbms_output.put_line(html);
/*
utl_mail.send(sender => 'something@bla.com',
recipients => 'bla@bla.com',
message => html,
mime_type => 'text/html'
);
*/
end;
Вы можете назвать это так:
SQL> exec MAIL;
<html>
<body>
<p>my content</p>
</body>
</html>
PL/SQL procedure successfully completed.
Это очень простой пример; Интерфейс вызываемой функции / процедуры зависит от вашего кода, вам нужно только отредактировать вашу процедуру, чтобы она могла быть вызвана, и вернуть необходимый результат.