Oracle 没有';在plsql中不发送邮件html正文
我在plsql中开发了一个触发器,该触发器可以工作,但我同时收到了6封邮件。我只需要一封信,我怎么办Oracle 没有';在plsql中不发送邮件html正文,oracle,plsql,oracle11g,sendmail,database-trigger,Oracle,Plsql,Oracle11g,Sendmail,Database Trigger,我在plsql中开发了一个触发器,该触发器可以工作,但我同时收到了6封邮件。我只需要一封信,我怎么办 CREATE or replace TRIGGER RI AFTER insert or update on ap_supplier_sites_all for each row DECLARE x_count NUMBER; begin select count(*) into x_count from rib1 r1,rib2 r2 where r1
CREATE or replace TRIGGER RI
AFTER insert or update on ap_supplier_sites_all
for each row
DECLARE
x_count NUMBER;
begin
select count(*) into x_count
from rib1 r1,rib2 r2
where r1.ATTRIBUTE4=r2.Supplier_RIB;
if(x_count > 0)
then
testrib;--execute SP
end if;
end;
事情是这样的:
- 在
AP\u供应商\u站点\u ALL中插入或更新行时触发
- 假设您运行了一个更新了6行的
语句,类似于Scott的update
表中的内容:EMP
update emp set sal = sal * 1.1 where deptno = 20;
- 假设您运行了一个更新了6行的
- 为每一行触发火灾;如果更新了6行,它将触发6次
- 它计算联接的
和rib1
表中的行数rib2
- 不引用所有ap供应商站点的“ID”列可以吗?差不多
select count(*) into x_count from rib1 r1, rib2 r2 where r1.ATTRIBUTE4 = r2.Supplier_RIB and r1.some_id = :new.some_ap_supplier_sites_all_id; --> this
- 不引用所有ap供应商站点的“ID”列可以吗?差不多
- 如果该数字大于0,则执行的是
过程testrib
- 如果它发送电子邮件,那么是的-它将发送6次
- 在
AP\u供应商\u站点\u ALL中插入或更新行时触发
- 假设您运行了一个更新了6行的
语句,类似于Scott的update
表中的内容:EMP
update emp set sal = sal * 1.1 where deptno = 20;
- 假设您运行了一个更新了6行的
- 为每一行触发火灾;如果更新了6行,它将触发6次
- 它计算联接的
和rib1
表中的行数rib2
- 不引用所有ap供应商站点的“ID”列可以吗?差不多
select count(*) into x_count from rib1 r1, rib2 r2 where r1.ATTRIBUTE4 = r2.Supplier_RIB and r1.some_id = :new.some_ap_supplier_sites_all_id; --> this
- 不引用所有ap供应商站点的“ID”列可以吗?差不多
- 如果该数字大于0,则执行的是
过程testrib
- 如果它发送电子邮件,那么是的-它将发送6次
怎么办?切换到语句级触发器(而不是当前使用的行级别),因为它会对每个语句触发一次,而不管受影响的行数。如果必须使用触发器,但考虑将电子邮件生成移回应用程序代码,则切换到@littlefoot建议的语句后触发器是正确的。如果在提交事务之前发生错误或用户取消(回滚)事务,会发生什么情况。您的更新电子邮件已发送,但更新未发送到数据库。如果您必须使用触发器,但考虑将电子邮件生成移回应用程序代码,则按照@littlefoot的建议切换到after语句触发器是正确的。如果在提交事务之前发生错误或用户取消(回滚)事务,会发生什么情况。您的更新电子邮件已发送,但更新未进入数据库。您好,谢谢您的更新,下面是我的说明:请参阅我下面的反馈这是无法阅读的,抱歉。据我所知,你指的是“错误的”计数。这不是触发器中SELECT语句返回的行数,而是受表AP_SUPPLIER_SITES_ALL上的INSERT或UPDATE影响的行数。是的,我计算每个供应商的attribute4数,如果count>1,则表示attribute4存在于2个或更多供应商,在这种情况下,请向经理发送电子邮件,告知:,属性4正在与其他供应商共享。我创建了另一个过程:创建或替换过程ribrib,因为v_计数编号:=0;开始从rib1 r1、rib3 r3中选择计数(*),其中r1.ATTRIBUTE4=r3.Supplier\u RIB;如果v_计数>1,则测试肋骨;如果结束;结束;在我的触发器调用我的新程序后:在ap\U供应商\U站点上插入或更新后创建或替换触发器复制\U RIB\U所有每行开始RIB;结束;但同样的问题6电子邮件在同一时间你好,谢谢你的更新,下面我的解释:请看我下面的反馈这是不可读的,对不起。据我所知,你指的是“错误的”计数。这不是触发器中SELECT语句返回的行数,而是受表AP_SUPPLIER_SITES_ALL上的INSERT或UPDATE影响的行数。是的,我计算每个供应商的attribute4数,如果count>1,则表示attribute4存在于2个或更多供应商,在这种情况下,请向经理发送电子邮件,告知:,属性4正在与其他供应商共享。我创建了另一个过程:创建或替换过程ribrib,因为v_计数编号:=0;开始从rib1 r1、rib3 r3中选择计数(*),其中r1.ATTRIBUTE4=r3.Supplier\u RIB;如果v_计数>1,则测试肋骨;如果结束;结束;在我的触发器调用我的新程序后:在ap\U供应商\U站点上插入或更新后创建或替换触发器复制\U RIB\U所有每行开始RIB;结束;但同样的问题,6封电子邮件在同一时间