sql - UTL_MAIL 消息属性调用 OWA_UTIL.cellsprint 过程 Oracle

标签 sql database oracle plsql

您好,我有以下 html 片段,我想在我的程序中通过电子邮件发送。 如何将其放入 UTL_MAIL 的消息属性中。 我应该把它放在某个变量中吗?如果是的话怎么办?

如果有更好的方法,我也很乐意探索。我有以下两个选择。我无法使 MESSAGE 属性起作用。

OPTION 1
   DECLARE
    BEGIN
    UTL_MAIL.SEND (
      sender       => 'xxx@yyy',
      recipients   => 'abc@xyz',
      subject      => 'Hi',
      MESSAGE      => 
      OWA_UTIL.cellsprint (p_theQuery =>'SELECT   a1,b1,c1,d1
                     FROM     test1
                     WHERE    a1 > 1
                     ORDER BY a1',
      p_max_rows=>'10',p_format_numbers => NULL),

      mime_type    => 'text/html; charset=us-ascii');

    END;

    ----------------------------------------------------------------
    OPTION2
    Declare
        Begin
        ....
        ......
        UTL_MAIL.SEND (
          sender       => 'xxx@yyy',
          recipients   => 'abc@xyz',
          subject      => 'Hi',
          MESSAGE      => ***
          mime_type    => 'text/html; charset=us-ascii');
        *** 
        HTP.P ('<HTML>');
         HTP.P ('<HEAD>');
         HTP.P ('<TITLE>Duplicate Records</TITLE>');
         HTP.P ('</HEAD>');
         HTP.P ('<BODY>');
         HTP.P ('<H1>Duplicate Records</H1>');
         HTP.P ('<TABLE BORDER="1 ">');
         HTP.P ('<TR><TH>HIERARCHY</TH><TH>Org Long NAME</TH></TR>');

         FOR idx IN (SELECT   a1,b1,c1,d1
                     FROM     test1
                     WHERE    a1 > 1
                     ORDER BY a1 LOOP
          HTP.P ('<TR>');
          HTP.P ('<TD>' || idx.a1 || '</TD>');
          HTP.P ('<TD>' || idx.b1 || '</TD>');
          HTP.P ('<TD>' || idx.c1 || '</TD>');
          HTP.P ('<TD>' || idx.d1 || '</TD>');
          HTP.P ('</TR>');
         END LOOP;

         HTP.P ('</TABLE>');
         HTP.P ('</BODY>');
         HTP.P ('</HTML>');


        END;

最佳答案

UTL_MAIL.send的message只是一个VARCHAR2参数,它接受一个字符串作为参数。

HTP.POWA_UTIL.cellsprint 是过程,而不是函数,因此它们不能用于向邮件传递值。它们设计用于基于网络的应用程序,不适用于邮件等其他用途。

如果您愿意,您可以使用 HTF 中的函数,但在您的情况下,您已经编写了 html,因此您也可以将其直接传递给消息:

UTL_MAIL.SEND (
      sender       => 'xxx@yyy',
      recipients   => 'abc@xyz',
      subject      => 'Hi',
      MESSAGE      => '<HTML>...'
      mime_type    => 'text/html; charset=us-ascii');

关于sql - UTL_MAIL 消息属性调用 OWA_UTIL.cellsprint 过程 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470518/

相关文章:

mysql - 查找并替换mysql中的时间戳数据

sql - 从具有重叠日期的记录中提取名称值

sql - T-SQL 中的 CAST 和 CONVERT

PHP 不会更新 MySQL 表

php - 使用ajax根据下拉菜单选择更新文本字段

sql - 避免子查询根据基本记录的日期从同一个表中选择记录

sql - 如何在 SQL 中获取最大子集的最大记录

sql - 连接子句中的 Oracle Invalid Number

oracle - 更新 SQL : how to update several times the same line

sql - 验证emp是否是oracle中的经理