使用 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 的自动警报电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
在 PL/SQL Developer 中通过电子邮件发送查询结果