我在oracle中写了一个会发送电子邮件的程序。我想在消息正文中包含应该引用另一个过程中计算的变量的变量。
作为一个例子,假设我有程序:
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'
);
代码过于简单以显示一般的想法,我正在寻找的是如何在这两个过程之间建立连接。由于第一个程序非常庞大,包括在同一程序中发送邮件不是一种选择。提前感谢任何提示/想法!
答案 0 :(得分:0)
您可以在邮件程序中调用不同的功能/程序;例如:
/* 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.
这是一个非常简单的例子;要调用的函数/过程的接口取决于您的代码,您只需编辑您的过程以便可以调用它并返回所需的结果。