错误
---------------------------
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;
这个触发器怎么会造成上面的错误!
4 个解决方案
#1
SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;
报错:
ORA-01403: no data found
ORA-06512: at "CSI2005.TRI_KC06K4", line 7
报错:
ORA-01403: no data found
ORA-06512: at "CSI2005.TRI_KC06K4", line 7
#2
是不是 SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;
怎么修改让它找不到而不会出现这样的错误啊!而我测试的数据确实可以找到的,但也会出现这样
的错误
=========================================================================
在插入kc06k4表的时候,其实这个触发器有时候可以正常运行,有时候不能正常运行!
怎么修改让它找不到而不会出现这样的错误啊!而我测试的数据确实可以找到的,但也会出现这样
的错误
=========================================================================
在插入kc06k4表的时候,其实这个触发器有时候可以正常运行,有时候不能正常运行!
#3
lz报错信息提示你,数据库里面没有等于你的新值的信息,所以报错了,你应该在这种情况下,加一个异常处理的。
#4
OK!
#1
SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;
报错:
ORA-01403: no data found
ORA-06512: at "CSI2005.TRI_KC06K4", line 7
报错:
ORA-01403: no data found
ORA-06512: at "CSI2005.TRI_KC06K4", line 7
#2
是不是 SELECT AAC001 INTO str_AAC001 from kc06 where AKC020 = :NEW.AKC020;
怎么修改让它找不到而不会出现这样的错误啊!而我测试的数据确实可以找到的,但也会出现这样
的错误
=========================================================================
在插入kc06k4表的时候,其实这个触发器有时候可以正常运行,有时候不能正常运行!
怎么修改让它找不到而不会出现这样的错误啊!而我测试的数据确实可以找到的,但也会出现这样
的错误
=========================================================================
在插入kc06k4表的时候,其实这个触发器有时候可以正常运行,有时候不能正常运行!
#3
lz报错信息提示你,数据库里面没有等于你的新值的信息,所以报错了,你应该在这种情况下,加一个异常处理的。
#4
OK!