APEX バージョン: 4.1.1
Example:
http://apex.oracle.com/pls/apex/f?p=27554:53
User name: demo
PW: demo
次のブログ ( http://spendolini.blogspot.com/2006/04/custom-export-to-csv.html ) を使用して .CSV ファイルを作成していますが、その .CSV ファイルを添付ファイルとして追加するにはどうすればよいですか? APEX で作成/生成されたメールに? .CSV ファイルを作成し、その .CSV ファイルを APEX で生成された電子メールに追加し、APEX ページでボタンがクリックされたときにその電子メールを送信する 1 ページ プロセスが必要です。
次のOracle ドキュメントもガイドラインとして使用しています。
[更新を適用] ボタンをクリックしたときの現在のページ プロセス コード: (コードを実行すると、.CSV ファイルが作成され、電子メールが送信されますが、電子メールには添付ファイルとして .CSV ファイルが含まれていません)
declare
l_body_html varchar2(4000);
l_subj varchar2(200);
l_from varchar2(200);
l_cc_address varchar2(2000);
l_cc varchar2(500);
l_id NUMBER;
begin
l_subj := '***TEST - DQ MANUAL EDIT - Daily Field Report - ***TEST';
l_body_html := '<html>
<head>
<style type="text/css">
body{font-family: Calibri, Arial, Helvetica, sans-serif;
font-size:11pt;
margin:30px;
color:#1F497D;
background-color:#ffffff;}
</style>
</head>
<body>';
l_body_html := l_body_html || '<body><div><p><span style="font-size:12.0pt;font-family:Calibri,sans-serif;color:#1F497D;font-weight:bold;">Attached is the manual edit report for today.</b>';
l_body_html := l_body_html;
l_body_html := l_body_html;
l_body_html := l_body_html || '<p>' || ' will contact you in the near future to prioritize the request and discuss an estimated completion date. Please note that many requests are received daily and it can take several days to couple of weeks on some requests. If this request is of a high critical nature, please feel free to contact directly or reply to this email.</p>';
l_body_html := l_body_html || '</div></body></html>';
begin
-- Set the MIME type
owa_util.mime_header( 'application/octet', FALSE );
-- Set the name of the file
htp.p('Content-Disposition: attachment; filename="Manual_Edit_Selected_Records.csv"');
-- Close the HTTP Header
owa_util.http_header_close;
-- Loop through all rows in EMP
htp.prn('Data Fields,Grouping,Channel,Month,Year,Edits' || chr(13));
for x in (select
dq_attribute,
dq_grouping,
case
when DQ_CHANNEL = 'Retail' then 'Retail/CD'
when DQ_CHANNEL = 'Consumer Direct' then 'Retail/CD'
else DQ_CHANNEL
end as dq_channel,
to_char(to_date(INSERT_DATE,'yyyy-mm'),'Month') as Month,
to_char(to_date(INSERT_DATE,'yyyy-mm'),'YYYY') as Year,
case when count(reason_for_change)=0 then 'N/A' else to_char(count(reason_for_change)) end as Edits
from DQ_MANUAL_EDIT
where
decode(NVL(:P50_DQ_ANALYST, 'ALL'), 'ALL','ALL',DQ_ANALYST) = NVL(:P50_DQ_ANALYST, 'ALL')
and decode(NVL(:P50_DQ_FIELD, 'ALL'), 'ALL','ALL',DQ_ATTRIBUTE) = NVL(:P50_DQ_FIELD, 'ALL')
and decode(NVL(:P50_DQ_CHANNEL, 'ALL'), 'ALL','ALL',DQ_CHANNEL) = NVL(:P50_DQ_CHANNEL, 'ALL')
and decode(NVL(:P50_DQ_GROUPING, 'ALL'), 'ALL','ALL',DQ_GROUPING) = NVL(:P50_DQ_GROUPING, 'ALL')
and decode(NVL(:P50_DQ_IMS, 'ALL'), 'ALL','ALL',DQ_IMS_NUM) = NVL(:P50_DQ_IMS, 'ALL')
and NVL(to_char(to_date(:P50_EDIT_DATE_FROM,'MM/DD/YYYY'),'MM/DD/YYYY'), to_date(sysdate,'MM/DD/YYYY')) <= trunc(INSERT_DATE)
and NVL(to_char(to_date(:P50_EDIT_DATE_TO, 'MM/DD/YYYY'),'MM/DD/YYYY'), to_date(sysdate-28,'MM/DD/YYYY')) >= trunc(INSERT_DATE)
Group by
dq_attribute,
INSERT_DATE,
dq_grouping,
dq_channel
order by to_char(to_date(INSERT_DATE,'yyyy-mm'),'YYYY') desc,
to_char(to_date(INSERT_DATE,'yyyy-mm'),'mm'), dq_attribute asc
)
loop
-- Print out a portion of a row,
-- separated by commas and ended by a CR
htp.prn(
'"' ||x.dq_attribute||'","'||
x.dq_grouping ||'","'||
x.dq_channel ||'","'||
x.Month ||'","'||
x.Year ||'","'||
x.Edits || '"' || chr(13));
end loop;
-- Send an error code so that the
-- rest of the HTML does not render
htmldb_application.g_unrecoverable_error := true;
end;
l_id := APEX_MAIL.SEND(
--P_TO => :P53_EMAIL_TO,
P_TO => 'first_name.last_name@company.com',
P_FROM => 'IT.DEPT@company.com',
P_BODY => l_body_html,
P_BODY_HTML => l_body_html,
P_SUBJ => l_subj);
FOR c1 IN (SELECT filename, blob_content, mime_type
FROM APEX_APPLICATION_FILES
WHERE ID IN (123,456)) LOOP
APEX_MAIL.ADD_ATTACHMENT(
p_mail_id => l_id,
p_attachment => c1.blob_content,
p_filename => c1.filename,
p_mime_type => c1.mime_type);
END LOOP;
COMMIT;
wwv_flow_mail.push_queue(
P_SMTP_HOSTNAME => 'mailhost.company.net',
P_SMTP_PORTNO => '31'
);
end;