For循环中触发失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了For循环中触发失败相关的知识,希望对你有一定的参考价值。
我正在尝试触发触发器,以便为批准者1的所有人员运行并向他们发送电子邮件。但是,这失败了。我正在使用apex sql工作坊,因此无法识别错误。
ORA-24344: success with compilation error
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200100", line 581
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200100", line 567
ORA-06512: at "APEX_200100.WWV_FLOW_DYNAMIC_EXEC", line 2127
3. insert on P_IT_ISSUES
4. for each row
5. FOLLOWS P_IT_ISSUES_AIU_EMAIL
6. begin
7. for c1 in
触发代码如下:
CREATE OR REPLACE EDITIONABLE TRIGGER P_IT_ISSUES_AIU_Notify_Approver_1
AFTER
insert on P_IT_ISSUES
for each row
begin
for c1 in
(select p.person_id ,p.person_name,p.person_email,i.dept_name from p_it_people p,p_it_departments i
where p.assigned_dept=i.dept_id and i.dept_id=:new.related_dept_id and p.approver='Approver 1')
LOOP
APEX_MAIL.SEND(
p_to => c1.email,
p_from => c1.email,
p_body =>
'You have been assigned a new issue.' ||chr(10)||
' The details are as follows ::: ' ||chr(10)||
chr(10)||
' Department:'|| c1.dept_name ||chr(10)||
' Summary: '||:new.issue_summary ||chr(10)||
' Status: '||:new.status ||chr(10)||
' Priority: '||nvl(:new.priority,'-'),
p_subj => 'New Issue ');
END LOOP;
end;
答案
触发代码从“创建或替换..”开始。那上面的几行是什么? “ 3.在...上插入。4. ...”?您是否将其包括在源代码窗口中?请仅发布确切的代码,以便我们了解问题所在。您的触发器名称长度为34个字符。更改为少于30个字符。这可能是造成您问题的原因。
一些技巧,使您成为一名Oracle开发人员更加容易。
- 不要使用大小写混合的对象名称(除非您有充分的理由:“我已经习惯了,因为它在xx语言中并不是一个很好的理由)。这是一个语法恐怖的场景。请改用仅使用大写字母。使用大写字母时,不需要在对象名称周围加上引号。
- 使用ANSI JOIN语法与oracle语法。它使您的代码更易于阅读,并且由于缺少连接而导致出错的可能性较小]
以上是关于For循环中触发失败的主要内容,如果未能解决你的问题,请参考以下文章