基于SQL结果的自动电子邮件

时间:2013-07-03 18:45:33

标签: sql oracle bash sendmail

我们需要编写一个BASH脚本来执行SQL查询,然后使用一些结果发送自动电子邮件。我们的SQL版本是Oracle8i企业版版本8.1.7.4.0和SELECT语句以获得我们想要的结果:

SELECT kred_lim.kunr, kust_adr.ku_email, kred_lim.kred_limit, kred_lim.kred_zu_zahlen
FROM kred_lim, kust_adr
WHERE kred_lim.kred_zu_zahlen > kred_lim.kred_limit
AND kred_lim.kunr = kust_adr.ku_nr;

因此,这将显示客户编号,客户电子邮件地址,信用额度和当前未结订单价值,仅限于未结订单价值高于其信用额度的客户。我们只是坚持从哪里开始,或者如何将这些结果纳入电子邮件。

我们只需要向每个人发送一封简单的电子邮件,说明他们超过了信用额度,并在该电子邮件中显示了信用额度和当前未结订单价值。

任何例子或指示都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

我会写:

#!/bin/bash

sql="
    set pagesize 0
    set feedback 0

    SELECT kred_lim.kunr ||','|| kust_adr.ku_email ||','|| kred_lim.kred_limit ||','|| kred_lim.kred_zu_zahlen
    FROM kred_lim, kust_adr
    WHERE kred_lim.kred_zu_zahlen > kred_lim.kred_limit
    AND kred_lim.kunr = kust_adr.ku_nr;
"

email_template="Subject: Credit limit
To: %s

Customer number: %s
Credit limit: %s
Current orders: %s
"

sqlplus $user/$pass@$db <<< "$sql" |
while IFS=, read -r num email limit orders; do
    printf "$email_template" "$email" "$num" "$limit" "$orders" |
    /path/to/sendmail -f sender@example.com -oi -t
done