根据字段名称UTL_MAIL.send发送电子邮件

时间:2018-10-26 18:57:29

标签: oracle oracle11g oracle-apex oracle-apex-5.1

如何根据顶点文本字段中输入的内容发送电子邮件。例如,如果我在:p6_supervisor中输入 me@test.com ,我希望将电子邮件发送给该人。

目前,我有一个可以正常工作的预设UTL_MAIL.send。

stocks_w_price_indicators<- stocks2 %>%
group_by(symbol)%>%
tq_mutate(select=close,mutate_fun=RSI) %>%
tq_mutate(select=c(high,low,close,volume),mutate_fun=CMF)

当然,这是出于其他目的,即从触发器向一个收件人发送电子邮件。

下面是“光标”示例

begin  
UTL_MAIL.send(sender    => 'test@test.com',
                recipients => 'test1@test.com',               
                subject    => 'Test,               
                message    => 'Please Note this is a test' );

end;

1 个答案:

答案 0 :(得分:0)

它将起作用,没问题。一种简单的方法是

  • 创建文本项(P6_SUPERVISOR
  • 创建一个提交页面的按钮;您需要它,以便将P6_SUPERVISOR的值设置为会话状态
  • 创建一个调用UTL_MAIL的进程; P6_SUPERVISOR项的内容用作RECIPIENTS参数的源。例如:

    UTL_MAIL.send (sender       => 'test@test.com',
                   recipients   => :P6_SUPERVISOR,
                   subject      => 'Test message - subject',
                   MESSAGE      => 'Test message - message body');
    

[编辑:如何循环发送邮件?]

我不确定您创建函数的含义;它仅返回一个电子邮件地址,该电子邮件地址可能属于通过NAME_IN参数传递的名称(但您在游标查询中使用了“测试”名称)。

但是,您指定了该函数返回一个NUMBER,而要选择结果的变量是VARCHAR2。那么,其中哪一项是正确的?

如果您坚持使用某个函数,则不要将其名称括在双引号中,因为您始终必须以这种方式引用它(双引号,正确的大写/小写/混合大小写)。

此外,contract_start_period列的数据类型是什么?如果是DATE,请不要TO_DATE。 SYSDATE也是如此-它是一个始终返回DATE数据类型的函数,因此再次将其转换为日期是错误

这里是一个示例,该示例使用游标FOR循环(因为它更易于维护)并将邮件发送到该SELECT语句返回的所有supervisoremail地址。

begin
  for cur_r in (select supervisoremail
                from employee e join supervisors s on s.supervisorname = e.supervisorname1
                                                   or s.supervisorname = e.supervisorname2
                where contract_start_period < sysdate - 275
                  and e.employee_name = 'test'
               )
  loop
    utl_mail.send(sender     => 'test@test.com',
                  recipients => cur_r.supervisoremail,
                  subject    => 'Test message - subject',
                  message    => 'Test message - message body');
  end loop;
end;