Можете да използвате двойни тръби (||
) като оператори за конкатенация и филтрирайте резултатите по желаните от вас типове състояния, изброени в скоби след IN
оператор за заявката.
Създайте процедура и вземете вашата заявка в нея като курсор и използвайте utl_http
пакет в рамките на тази процедура, както е показано по-долу:
create or replace procedure pr_mail_me is
v_email varchar2(100) := '[email protected]';
v_rep varchar2(4000);
v_url varchar2(4000);
cursor crs_request is
select 'The concurrent '||program||' with request_id '||request_id||' ended with status '||
status as message, request_id
from
(
<the subquery>
)
where rn = 1
and status in ('WARNING','ERROR','STAND BY');
begin
for c in crs_request
loop
begin
v_url := 'http://www.mycompany.com/path_to/default.aspx?email=' ||
v_email ||'&out_message='||c.message||'&out_request_id='||c.request_id;
v_rep := utl_http.request(utl_url.escape(v_url,false,'UTF-8'));
exception
when others then
v_url := 'http://www.mycompany.com/path_to/default.aspx?email=' ||
v_email ||'&out_message='||substr(sqlerrm,1,250)||'&out_request_id='||c.request_id;
v_rep := utl_http.request(utl_url.escape(v_url,false,'UTF-8'));
end;
end loop;
end;
за да получавате имейли, като извиквате тази процедура.