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