使用 sql developer 的自动警报电子邮件

Posted

技术标签:

【中文标题】使用 sql developer 的自动警报电子邮件【英文标题】:automated alert emails using sql developer 【发布时间】:2012-05-21 08:11:20 【问题描述】:

超市有很多产品。当其中一种产品的数量为零时,需要向经理发送一封自动电子邮件,表明该产品缺货。

我已经完成了电子邮件部分(通过 SQL Developer 发送电子邮件)。现在我需要设置一个循环来跟踪产品的数量。这个循环怎么叫? .

APC?我试过了。但它不适合我

create or replace
procedure check_stock_qty
begin      
for r in ( select product_name,product_id from super_market 
where pro_qty = 0 )  
loop       
UTL_MAIL.send(sender => 'blabla@me.com',
        recipients => 'blabla@me.com',
         subject => 'Test Mail',
         message => ( r.product_name ),
      mime_type => 'text; charset=us-ascii');  

end loop; 
end;
------------------------
BEGIN    

dbms_scheduler.create_job (job_name => 'stock check',
job_type        => 'PLSQL_BLOCK',        
job_action      => 'BEGIN check_stock_qty; END;',    
start_date      => SYSTIMESTAMP,       
repeat_interval => 'freq=minutely; interval=5; bysecond=0;',    
end_date        => NULL,         
enabled    => TRUE,
END;

程序编译,但是win运行它。它给出了一个错误“所选程序处于无效运行状态。重新编译程序并重试”

【问题讨论】:

您是否打算每五分钟为每个缺货的产品发送一封电子邮件?我认为最好建立一个缺货产品清单并将其发送出去。您可能还想存储最近通知的列表,这样您就不会每五分钟就同一项目进行通知。 【参考方案1】:

执行此操作的最佳方法是使用数据库作业定期检查 PRODUCTS 表。

首先你需要一个存储过程。像这样的:

create or replace procedure check_stock_qty
begin
     for r in ( select product_name from products
                where qty = 0 )
     loop
         your_email_proc_here ( r.product_name );
     end loop;
end;

然后,您可以将其设置为定期运行。当您使用 Oracle 11g 时,您应该使用 DBMS_SCHEDULER API 来执行此操作。此调用将每五分钟运行一次上述库存检查器:

BEGIN
    dbms_scheduler.create_job (
        job_name        => 'stock check',
        job_type        => 'PLSQL_BLOCK',
        job_action      => 'BEGIN check_stock_qty; END;',
        start_date      => SYSTIMESTAMP,
        repeat_interval => 'freq=minutely; interval=5; bysecond=0;',
        end_date        => NULL,
        enabled         => TRUE,
END;
/

DBMS_SCHEDULER 非常复杂,即复杂但有据可查。 Find out more.

【讨论】:

以上是关于使用 sql developer 的自动警报电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Access 2016 定时发送自动电子邮件

VSTS 发布自动部署完成失败警报

在 PL/SQL Developer 中通过电子邮件发送查询结果

如何使用 sql developer 设置自动递增列

我可以将我的 API 连接到 Alexa Notification 以获取自动警报吗?

SQL数据库语言基础之SqlServer的自动化管理功能(SQL Server代理作业警报操作员)