Oracle
 sql >> Base de données >  >> RDS >> Oracle

Meilleur moyen de recevoir un e-mail après un échec simultané (sql - déclencheur - application)

Vous pouvez utiliser des tubes doubles(|| ) en tant qu'opérateurs de concaténation et filtrez les résultats en fonction des types d'état souhaités répertoriés entre parenthèses après le IN opérateur pour la requête.

Créez une procédure et placez-y votre requête sous forme de curseur et utilisez utl_http colis dans le cadre de cette procédure comme ci-dessous :

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;

afin de recevoir des e-mails en appelant cette procédure.