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开发人员更加容易。

  1. 不要使用大小写混合的对象名称(除非您有充分的理由:“我已经习惯了,因为它在xx语言中并不是一个很好的理由)。这是一个语法恐怖的场景。请改用仅使用大写字母。使用大写字母时,不需要在对象名称周围加上引号。
  2. 使用ANSI JOIN语法与oracle语法。它使您的代码更易于阅读,并且由于缺少连接而导致出错的可能性较小]

以上是关于For循环中触发失败的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB for循环内if语句判断失败

Python for..else 循环总是触发 else

Howler.js - 从数组/for循环引用和触发文件

Vuex 全局状态更改不会触发 Nuxt 中 v-for 循环中的重新渲染组件

Jenkins 作业因命令中的 for 循环而失败

使用 CSS3 动画和 Sass @for 循环触发列表