Oracle 触发器问题??? 详情请进.....

kl2000 2007-01-16 05:01:26
---------------------------
错误
---------------------------
ORA-01403: no data found
ORA-06512: at "CSI2005.TRI_KC06K4", line 7
ORA-04088: error during execution of trigger 'CSI2005.TRI_KC06K4'

查看错误堆栈的程序源?
---------------------------
是(Y) 否(N)
---------------------------
触发器原程序:
CREATE OR REPLACE TRIGGER TRI_KC06K4
BEFORE INSERT
ON CSI2005.KC06K4
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW


DECLARE
s_AAE790 temp_aa83.aae790%TYPE;
s_YKC130 kc04k1.YKC130%type;
s_YKC140 kc04k2.YKC140%type;
str_AAC001 KC06.AAC001%type;
BEGIN
SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;
/*如果是退费由于不能在发生时立即冲到IC卡上,所以则需要往医保个人帐户收入流水帐表中增加一条记录*/
IF :NEW.AKC186='9' and :NEW.AKC185 > 0 THEN
SELECT SEQ_AAE790.NEXTVAL INTO S_AAE790 FROM DUAL;
DELETE FROM TEMP_AA83 ;
INSERT INTO TEMP_AA83 (AAE790,AAA831,AAA832) VALUES (S_AAE790,'否','否');
SELECT SEQ_YKC130.NEXTVAL INTO S_YKC130 FROM DUAL;
INSERT INTO KC04K1(YKC130,
YKC028,
AAC001,
YKC131,
YKC132,
YKC133,
YKC134,
YKC135)
VALUES( S_YKC130,
'14',
str_AAC001,
:NEW.AKC185,
:NEW.AAE011,
:NEW.AKC188,
:NEW.AKC180,
:New.YKC101);
ELSE IF :NEW.AKC186='5' AND :NEW.AKC185 >0 THEN /*如果是正常消费项目,则需要记录到KC04K2表(医保个人帐户支出流水帐)*/
SELECT SEQ_AAE790.NEXTVAL INTO S_AAE790 FROM DUAL;
DELETE FROM TEMP_AA83 ;
INSERT INTO TEMP_AA83 (AAE790,AAA831,AAA832) VALUES (S_AAE790,'否','否');
SELECT SEQ_YKC140.NEXTVAL INTO S_YKC140 FROM DUAL;
INSERT INTO KC04K2(YKC140,
AAC001,
YKC028,
YKC141,
YKC142,
YKC143,
YKC144,
YKC145)
VALUES ( s_YKC140,
str_AAC001,
'20',
:NEW.AKC185,
:NEW.AKC188,
:NEW.AAE011,
:NEW.AKC180,
:NEW.YKC101);
END IF;
END IF;


END;
这个触发器怎么会造成上面的错误!
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kl2000 2007-01-17
  • 打赏
  • 举报
回复
OK!
tgm78 2007-01-17
  • 打赏
  • 举报
回复
lz报错信息提示你,数据库里面没有等于你的新值的信息,所以报错了,你应该在这种情况下,加一个异常处理的。
kl2000 2007-01-16
  • 打赏
  • 举报
回复
是不是 SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;
怎么修改让它找不到而不会出现这样的错误啊!而我测试的数据确实可以找到的,但也会出现这样
的错误
=========================================================================
在插入kc06k4表的时候,其实这个触发器有时候可以正常运行,有时候不能正常运行!




tgm78 2007-01-16
  • 打赏
  • 举报
回复
SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;

报错:
ORA-01403: no data found
ORA-06512: at "CSI2005.TRI_KC06K4", line 7

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧