Oracle触发器初体验

今天帮其他项目组同事写触发器。

由于本人以前未接触过触发器,周末去书城翻翻书看了下。

现把出现的问题记录如下。

ORA-04098 触发器无效或未通过重新验证

此处问题主要是触发器语法、语句写的又问题。

如声明变量

DECLARE
ISA13 VARCHAR2(1);
SELECT E1307 INTO ISA13 from USRA13 WHERE A0100 = :NEW.A0100;

此处 E1307 在数据库中为 VARCHAR2,一开始为图简便 把ISA13 声明为 NUMBER 类型。

总结:ORA-04098主要是语法不正确或者变量声明赋值类型不正确等问题

ORA-01403 no data found 数据未找到

当时sql如下

SELECT E1307 INTO ISA13 from USRA13 WHERE A0100 = :NEW.A0100;

看错误楼主就明白是啥问题。so,当时sql 修改如下

SELECT nvl(E1307 ,3)INTO ISA13 from USRA13 WHERE A0100 = :NEW.A0100;

执行之后还是报错 ORA-01403,囧了~,上网搜之

先给出帮我解决问题的连接:http://blog.csdn.net/aiouwen521/article/details/5858841

修改代码如下,问题解决

begin
    SELECT E1307 INTO ISA13 from USRA13 WHERE A0100 = :NEW.A0100; 
exception
    when no_data_found then ISA13 := 3;
end;

如此,完成触发器之初体验。这种事果然比整理历史数据有成就感~哈哈!

Oracle触发器初体验,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。