APEX 3.2: процесс обработки заявления If

У меня есть процесс страницы, который я пытаюсь запустить, который отправит электронное письмо, если будут выполнены определенные условия. Однако, если процесс не извлекает какие-либо данные, я все же хочу, чтобы страница открывалась как обычно. Я застрял на "ORA-01403: данные не найдены" при выполнении следующего оператора Select:

select issue_added_to_alm into issue_added from Table_2 WHERE issue_Requester = '1234' and Issue_Added_To_ALM = '1' and EMAIL_NOTIFICATION = '0';

Если я удаляю исходный оператор выбора и заменяю оператор IF следующим:

IF :NEW.ISSUE_ADDED_TO_ALM = 1 THEN

Я получаю: ORA-01008: не все переменные связаны

Как мне этого добиться?

declare
 l_body varchar2(4000);
 l_to_address varchar2(2000);
 l_from varchar2(200) :='dq.issue.mgmt@jpmchase.com';
 l_summary varchar2(1000);
 l_description varchar2(4000);
 l_ALM_ID varchar2(100);
 l_subject varchar2(400);
 l_added_to_alm varchar2(200);
 issue_added varchar2(200);


begin

select 
issue_added_to_alm 
into issue_added 
from Table_2 
WHERE issue_Requester = '1234' 
and Issue_Added_To_ALM = '1' and EMAIL_NOTIFICATION = '0';

 if issue_added = 1 Then

        select EMP_EMAIL_NAME 
        into l_to_address
        from Table_1 where emp_id = '1234';

        select 
        ISSUE_Summary,ISSUE_DESCRIPTION,ALM_ISSUE_ID,email_notification 
        into l_summary,l_description,l_ALM_ID,l_added_to_alm
        FROM Table_2
        WHERE issue_Requester = '1234' and Issue_Added_To_ALM = '1' and EMAIL_NOTIFICATION = '0';

        l_subject := l_ALM_ID || 'Request has been created.';

        l_body :=  '<style type="text/css">
        p{font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size:12pt;
        margin-left:30px;
        }
        </style>';

                l_body := l_body ||  '<p>Your request has been created.</p>';
                l_body := l_body ||  '<p>Data Quality Center received the following request:</p>';
                l_body := l_body ||  '<p>Request ID: '|| l_ALM_ID ||'</p>';
                l_body := l_body ||  '<p>Request Title: '|| l_summary||'</p>';
                l_body := l_body ||  '<p>Request Description: '|| l_description||'</p>';



          HTMLDB_MAIL.SEND(
            P_TO        => l_to_address,
            P_FROM      => l_from,
            P_BODY      => l_body,
            P_BODY_HTML => l_body,
            P_SUBJ      => l_subject,
            P_CC        => l_from);

            wwv_flow_mail.push_queue(
           P_SMTP_HOSTNAME => 'mail.mailserver.net',
           P_SMTP_PORTNO => '12'
           );

           UPDATE Table_2 set EMAIL_NOTIFICATION = 1 where ALM_ISSUE_ID = :l_ALM_ID;

  end if;

  end;

Спасибо заранее.

1 ответ

Решение

Вам просто нужно добавить обработчик исключений перед финалом end;:

   ...
exception
  when no_data_found then
    null;
end;
Другие вопросы по тегам