设为首页 收藏本站
查看: 958|回复: 0

[经验分享] 动态SQL,嵌套游标,INSTR,SendMail

[复制链接]
累计签到:10 天
连续签到:1 天
发表于 2015-9-15 07:39:30 | 显示全部楼层 |阅读模式
  

  1 DSC0000.gif PROCEDURE send_detail_mail(
  2        p_single_user   IN   VARCHAR2,
  3        p_admin_user    IN   VARCHAR2,
  4        p_current_day   IN   DATE )
  5    IS
  6        conn                         UTL_SMTP.connection;
  7        v_current_day                DATE;
  8        v_html_header                VARCHAR2( 8000 );
  9        v_html_body                  VARCHAR2( 8000 );
10        v_html_tail                  VARCHAR2( 2000 );
11        v_mail_suject                VARCHAR2( 255 );
12        v_user_name                  VARCHAR2( 60 );
13        v_user_nick_name             VARCHAR2( 60 );
14        v_user_mail_address          VARCHAR2( 100 );
15        v_html_log                   VARCHAR2( 1000 );
16        v_ro_site_group              VARCHAR2( 100 );
17        v_ns_site_group              VARCHAR2( 100 );
18        v_product_line_group         VARCHAR2( 200 );
19        v_user_group                 VARCHAR2( 200 );
20        v_get_mail_data_sql_string   VARCHAR2( 500 );
21        v_ro_site                    VARCHAR2( 100 );
22        v_ns_site                    VARCHAR2( 100 );
23        v_mail_data                  CLOB;
24        v_get_mail_data_sql          VARCHAR2( 500 );
25        v_send_mail_sql              VARCHAR2( 500 );
26    BEGIN
27        ----initial v_currentday
28        v_current_day := NVL( TRUNC( p_current_day ), TRUNC( SYSDATE - 1 ));
29        v_html_header := '';
30        v_html_tail :=
31               '<ul><font class="inf">'
32            || '<li>slow moving ratio =  over 15 days inventory qty / total in warehouse inventory qty(not include MIT)</li>'
33            || '<li>ADS days (Historic) =inventory qty*30/ prior 30 ship qty</li>'
34            || '<li>ADS days (Forecast)=inventory qty*28/ next 4-week forecast </li>'
35            || '<li>NFP : No Forecast Provided or available on Demand Forecast System</li>'
36            || '<li>Resource : EIS/DFS</li>'
37            || '<li>For BQP business model concern, we put BQP finish goods in service warehouse in "Non-Saleable" section on this report</li></ul><br>'
38            || ' <FONT face=Arial color=#000080 size=2><STRONG>Information Support Department</STRONG></FONT><br>'
39            || ' <FONT face=Arial color=#000080 size=2><STRONG>'
40            || TO_CHAR( SYSDATE, 'YYYY-MM-DD' )
41            || '</STRONG></FONT>';
42        v_mail_suject :=
43                       'Inventory Alert : Over-aged inventory-Action Required';
44        v_html_log := '';
45
46        --send mail by mail group
47        DECLARE
48            CURSOR cur_detailed_group
49            IS
50                SELECT '''' || REPLACE( ro_site,
51                                        ',',
52                                        ''',''' ) || '''',
53                       '''' || REPLACE( ns_site,
54                                        ',',
55                                        ''',''' ) || '''',
56                       '''' || REPLACE( product_line,
57                                        ',',
58                                        ''',''' ) || '''',
59                       '''' || REPLACE( user_id,
60                                        ',',
61                                        ''',''' ) || ''''
62                  FROM eis_hq_invhl_mail_group
63                 WHERE report_type = 'Detailed';
64        BEGIN
65            OPEN cur_detailed_group;
66
67            LOOP
68                FETCH cur_detailed_group
69                 INTO v_ro_site_group, v_ns_site_group, v_product_line_group,
70                      v_user_group;
71
72                EXIT WHEN cur_detailed_group%NOTFOUND;
73
74                --get ro_site, ns_site
75                DECLARE
76                    CURSOR cur_ns_site
77                    IS
78                        SELECT DISTINCT ro_site, ns_site
79                                   FROM eis_hq_invhl_mail_data
80                                  WHERE report_type = 'Detailed'
81                                    AND INSTR( v_ns_site_group, ns_site ) > 0;
82                BEGIN
83                    OPEN cur_ns_site;
84
85                     --EXECUTE IMMEDIATE v_sql;
86                     --BEGIN
87                    -- OPEN cur_mail_site;
88                    LOOP
89                        FETCH cur_ns_site
90                         INTO v_ro_site, v_ns_site;
91
92                        EXIT WHEN cur_ns_site%NOTFOUND;
93                         -- DBMS_OUTPUT.put_line( v_ro_site || ' ----------- '
94                        --                        || v_ns_site );
95                          --Saleable
96                          --title
97                        v_get_mail_data_sql :=
98                               'select STRING_AGGREGATE_FUN(mail_data) from eis_hq_invhl_mail_data where ns_site = '''
99                            || v_ns_site
100                            || '''and wh_type = ''Saleable''and report_type = ''Detailed'' and product_line in ('
101                            || v_product_line_group
102                            || ') group by ns_site';
103
104                        --DBMS_OUTPUT.put_line( v_product_line_group );
105                        --DBMS_OUTPUT.put_line( v_sql );
106                        EXECUTE IMMEDIATE v_get_mail_data_sql
107                                     INTO v_mail_data;
108                    --Non-Saleable
109                    --title
110
111                    -- DBMS_OUTPUT.put_line( v_product_line );
112                    END LOOP;
113                --DBMS_OUTPUT.put_line( v_ro_site || ' ----------- ' || v_ns_site );
114                END;
115
116                           
117                DECLARE
118                    CURSOR cur_send_mail
119                    IS
120                        SELECT DISTINCT email, attribute2
121                                   FROM wscuser
122                                  WHERE INSTR( v_user_group, userid ) > 0;
123                BEGIN
124                    OPEN cur_send_mail;
125
126                    LOOP
127                        FETCH cur_send_mail
128                         INTO v_user_mail_address, v_user_nick_name;
129
130                        EXIT WHEN cur_send_mail%NOTFOUND;
131                        conn :=
132                            eis_mail_pkg.begin_mail
133                                     ( sender =>           'e@163.com',
134                                       recipients =>       'Sammy@163.com',
135                                       subject =>          'EIS INVHL',
136                                       mime_type =>        'text/html;charset=utf-8' );
137                        eis_mail_pkg.write_mb_text( conn, v_html_tail );
138                        eis_mail_pkg.end_mail( conn );
139                    END LOOP;
140                END;
141            END LOOP;
142        END;
143    END;
144
145

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-113668-1-1.html 上篇帖子: SMTP sendMail 失败解决办法 下篇帖子: sendmail狂占进程,导致平均负载升高;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表