使用 raise_application_error 的 PL SQL 触发器会引发错误。
Posted
技术标签:
【中文标题】使用 raise_application_error 的 PL SQL 触发器会引发错误。【英文标题】:PL SQL trigger using raise_application_error thows error. 【发布时间】:2013-05-08 20:02:44 【问题描述】:我有一些代码需要帮助调试,但我觉得如果我能让其中一个运行,我就能得到其余的(哦,我多么希望)。
create or replace
trigger minimumwage
before insert or update on Employee
for each row
begin
if :new.Wage < 7.25
then raise_application_error('-20000,Pay is below Texas minimum wage!');
end if;
end;
/
如果有帮助,我正在尝试在通过 sqlplus 在我学校服务器上运行的表上执行此操作。
【问题讨论】:
你有什么问题? 警告:触发器创建时出现编译错误。是问题 我修复了我在其他触发器上的所有错误,除了一个涉及总体计数的错误我真的很高兴我发布了这个问题 运行show errors
并向我们展示真正的错误消息。
【参考方案1】:
当您遇到错误时,指定什么错误总是有帮助的。触发器中的 raise_application_error
调用存在语法错误。该过程有两个参数,一个数字和一个字符串。您传入的是一个长字符串的单个参数。
create or replace trigger minimumwage
before insert or update on Employee
for each row
begin
if :new.Wage < 7.25
then
raise_application_error(-20000,'Pay is below Texas minimum wage!');
end if;
end;
假设您的EMPLOYEE
表中有WAGE
列,则应该是有效的。
【讨论】:
哇!哦,我的上帝 D:非常感谢你,我一直为它吓坏了【参考方案2】:create or replace trigger deny_dec_pu before update of PU on ARTICLE
for each row
declare
erreur_pu exception;
begin
*insert into erreur values ('Operation de MAJ',sysdate);*
-- this intruction is never executec why ?
if (:new.pu < :old.pu) then
raise erreur_pu ;
end if;
exception
when erreur_pu then
Raise_application_error(-20100, 'rrrrrrrr', FALSE);
end;
/
【讨论】:
以上是关于使用 raise_application_error 的 PL SQL 触发器会引发错误。的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)