Oracle apex APEX 3.2:页面处理If语句

Oracle apex APEX 3.2:页面处理If语句,oracle-apex,Oracle Apex,我有一个页面进程,我正在试图运行,将发送电子邮件,如果某些条件得到满足。但是,如果进程没有提取任何数据,我仍然希望页面像正常一样打开。当以下Select语句运行时,我被困在“ORA-01403:未找到数据”上: 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'

我有一个页面进程,我正在试图运行,将发送电子邮件,如果某些条件得到满足。但是,如果进程没有提取任何数据,我仍然希望页面像正常一样打开。当以下Select语句运行时,我被困在“ORA-01403:未找到数据”上:

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';
如果删除初始select语句并用以下语句替换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;
声明
l_body varchar2(4000);
l_to_地址varchar2(2000年);
来自varchar2的l_(200):=“dq.问题。mgmt@jpmchase.com';
l_摘要varchar2(1000);
l_说明varchar2(4000);
l_ALM_ID varchar2(100);
l_受试者varchar2(400);
l_将_添加到_alm varchar2(200);
第2期(200);
开始
挑选
问题添加到alm中
他补充道
来自表2
其中问题请求者='1234'
问题添加到了ALM='1'和电子邮件通知='0';
如果添加的问题=1,则
选择EMP\u电子邮件\u名称
进入l_to_地址
来自表1,其中emp_id='1234';
挑选
问题摘要、问题描述、ALM问题ID、电子邮件通知
在l_摘要、l_说明、l_ALM_ID中,l_将_添加到_ALM中
来自表2
其中,问题请求者='1234'和问题添加到问题ALM='1'和电子邮件通知='0';
l_subject:=l_ALM_ID | |“已创建请求”;
l_body:='
字体系列:Calibri、Arial、Helvetica、无衬线字体;
字号:12号;
左边距:30px;
}
';
l_body:=l_body | |'您的请求已创建。

'; l_body:=l_body | |'数据质量中心收到以下请求:

; l|body:=l|body |‘请求ID:‘| l|ALM|ID |’

’; l|U body:=l|U body |‘请求标题:‘| | l| U摘要|‘

’; l|u body:=l|u body|'请求描述:'| l|u Description|'

; HTMLDB_MAIL.SEND( P_TO=>l_TO_地址, P_FROM=>l_FROM, P_BODY=>l_BODY, P_BODY_HTML=>l_BODY, P_主题=>l_主题, P_CC=>l_from); wwv_flow_mail.push_队列( P_SMTP_主机名=>'mail.mailserver.net', P_SMTP_端口号=>'12' ); 更新表2设置电子邮件通知=1,其中ALM\U ISSUE\u ID=:l\u ALM\u ID; 如果结束; 结束;

非常感谢。

您只需在最后的
结束之前添加一个异常处理程序

   ...
exception
  when no_data_found then
    null;
end;

底部“结束”之前的更新不是更新表。要做到这一点,我需要做些什么。如果问题添加=1,则更新在
部分中,因此,如果(a)找到记录但问题添加1,或(b)未找到数据(引发异常),则不会执行更新。你是说你想让这个更新在任何情况下都发生,还是别的什么?没关系,我想出来了。删除“:”。ALM\U问题\U ID=l\U ALM\U ID;