2

我编写了一个脚本,它连接到数据库,并在后台处理一份交付给某个客户的订单列表,然后通过电子邮件将其发送给他们,但是有些日子客户将没有任何交付,所以他们得到一个空白附件。

最好的方法是什么,所以如果 SQL 结果为空,那么它应该跳过客户?

在脚本中,它遍历设置为变量的帐号:

accounts=100...

for i in $accounts {
do

do_data $i
do_mail $i

}

类似的 SQL:

do_data () {
        sqlplus -s "$user/$pass@$db" <<EOF
        SPOOL $1.csv
        SELECT order_no
        FROM orders
        WHERE customer_number = $1
}

基本上,如果do_data什么都不输出,那么它不应该达到do_mail.

4

1 回答 1

0

我可以看到结果被假脱机到 $1.csv 文件中检查文件是否不为空,并根据该文件是否调用 do_mail 函数确保如果找不到数据,Oracle 不会返回任何内容

另一种方法是更改​​ SQL 语句以返回字符串“NO DATA FOUND”您可以检查此类字符串是否在输出中并采取相应措施

于 2013-10-28T19:05:08.070 回答